1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Variable eines Plugins in einem andere nutzen?

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von gachet01, 27. November 2009.

  1. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    Hallo,

    ich würde gerne meine webseiten mit dem global translater plugin übersetzen lassen. Das klappt soweit, bis auf die meta description. Diese wird vom all in one seo plugin wohl wieder überschrieben und ist dann auf den übersetzten Seiten in deutsch.

    in der translator.php vom global translation plugin hab ich das gefunden:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    das bedeutet doch eigentlich, dass sobald eine translation durchgeführt wird, diese wieder gelöscht werden sollte? naja wie auch immer, es wird nix gelöscht, also dachte ich mir, ich definiere eine globale variable in dieser function:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Im All in one seo paket schreibe ich dann:

    if ($zielsprache == 'de') {
    if (is_single() || is_page()) {
    $meta_string .= sprintf("<meta name=\"description\" content=\"%s %s\" />", $seotitel, $description);
    }else {
    $meta_string .= sprintf("<meta name=\"description\" content=\"%s\" />", $description);
    }
    }

    Es funktioniert aber nicht. das all in one seo plugin kennt die $zielsprache überhaupt nicht. Was kann ich hier tun?
    Wenn ich in einem plugin eine variable als global defniere, dann ist die doch auch in einem anderen plugin einbindbar oder nicht?
    danke
     
    #1 gachet01, 27. November 2009
    Zuletzt bearbeitet: 27. November 2009
  2. toscho

    toscho Well-Known Member

    Registriert seit:
    4. August 2006
    Beiträge:
    631
    Zustimmungen:
    0
    Das kommt darauf, in welcher Reihenfolge die Plugins geladen werden. Wenn das All-In-One-Plugin loslegt, bevor deine Variable instantiiert wurde, kann es sie natürlich nicht kennen.
     
  3. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    und wo wird die reihenfolge definiert?
     
  4. Whoppy

    Whoppy Well-Known Member

    Registriert seit:
    27. August 2008
    Beiträge:
    438
    Zustimmungen:
    0
    Ich weiß nicht ob das funktioniert, aber kann man nicht im SEO-Plugin mittels "require" das Translator-Plugin einbinden?

    Gruß Whoppy
     
  5. toscho

    toscho Well-Known Member

    Registriert seit:
    4. August 2006
    Beiträge:
    631
    Zustimmungen:
    0
    Dort, wo das jeweilige Plugin es wünscht. Die beiden wesentlichen Funktionen heißen add_filter() und add_action(). Hier ist es jeweils der dritte Parameter.
    Wenn das SEO-Plugin eine Variable aus einem vorhergehenden kennen soll, mußt du also seine Priorität herabsetzen und den Parameter beispielsweise aus 12 stellen (höhere Zahl = niedrigere Priorität).

    @Whoppy: Wenn das SEO-Plugin das Translatorplugin einbindet, dann wird es zweimal ausgeführt, oder etwas anderes geht schief. Das halte ich für einen schlechten Weg.
     
  6. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    also leute, ich komm hier einfach nicht weiter. 2 Tage sitze ich jetzt schon von morgens bis abends an diesem ding und komme nicht weiter.

    egal was man durchreicht ob session global etc, nichts lässt sich verwenden. ich kann jetzt hier keine weitere zeit mehr verbrennen. würde mir jemand der die struktur von wordpress versteht für paar euro (gerne paypal) helfen? kann sofort ftp durchgeben..danke
     
  7. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    also das lässt mir natürlich keine Ruhe.

    in der all in one seo ist add_action so definiert:

    add_action('wp_head', array($aiosp, 'wp_head'));

    im translation plugin so

    add_action('parse_query', 'gltr_insert_my_rewrite_parse_query',-1);//this action should have the maximum priority!

    ich hab mit dem 3ten parameter (priorität) bei beiden gespielt. Hat nix gebracht!

    Nochmal die Anfangsfrage. Wie kann ich eine Variable welche ich in einem plugin definiere in einem anderen plugin nutzbar machen?
     
  8. toscho

    toscho Well-Known Member

    Registriert seit:
    4. August 2006
    Beiträge:
    631
    Zustimmungen:
    0
    Ich verstehe nicht, welche andere Lösung du erwartest.

    Was passiert denn, wenn du meinen Vorschlag umsetzt?

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  9. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    wenn ich das umsetze und mit dann die source der übersetzen seite ansehe, ist die meta description noch vorhanden.

    was ich möchte ist entweder, dass die meta description übersetzt wird wie alles andere auf der seite auch oder das die meta description entfernt wird. Weil ne übersetze Seite mit ner deutschen Beschreibung kommt nicht gut.

    Selbst wenn ich das all in one seo plugin deaktiviert habe und im header eine händische meta desc einfüge, löscht der translater die desc nicht, obwohl er das hier intus hat:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    wenn schon das automatische löschen des translaters nicht funktioniert, möchte ich über den translater eine variable generieren welche ich dann im all in one seo um den meta desc Aufruf legen kann.
     
  10. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    jetzt haben wir schon Tag nummer 4 und ich sitze immer noch von morgens bis abends dran heraus zu finden wie ich eine blöde variable nutzbar machen kann.

    ich will doch lediglich, dass diese meta description verschwindet und versuche im translater eine global variable zu erstellen und diese per "if abfrage" in einem anderen plugin (all in one Seo) zu nutzen.

    warum ist das denn so schwer...das traurige ist, die Lösung dauert wohl nicht länger als 1 Minute und ich sitze schon über 72 Stunden dran. zum k......:x
     
  11. toscho

    toscho Well-Known Member

    Registriert seit:
    4. August 2006
    Beiträge:
    631
    Zustimmungen:
    0
    Wo wird denn die Variable genau erstellt? Im Plugin, im Post-Editor, im Theme? In den beiden letzten Fällen entsteht sie erst, wenn alle Plugins schon längst fertig sind.

    Im einfachsten Fall legst du eben für jeden Text ein Custom Field an, das du im Theme abfragst und als Beschreibung verwendest.
     
  12. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    Hallo,

    danke für deine Antwort.

    Das mit den Customfields hab ich bei meinem Blog mit nur 10 Seiten mal probiert und das funktioniert soweit aber ich würde das halt gerne auch in meinen anderen blogs mit ca. 1400 Beiträgen verwenden und da tue ich mir jetzt etwas schwer für alle noch custom metas zu schreiben.

    zu deiner ersten Frage. Die Variable wird im Plugin selbst erstellt. also ich erstelle z.b. im translator.php plugin eine variable als global und möchte das ich diese dann in einem anderen plugin (all in one seo) verwenden kann. egal wie ich die reihenfolge einstelle, die variable ist nicht nutzbar. könntest du mir sagen, wie ich eine variable in einem plugin erstelle, damit diese auch in den anderen plugins einbindbar ist?
     
  13. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    ich bin hier kurz davor aus dem Fenster zu springen...5 Tage an sitze ich nun an dieser simplen Abfrage, man man man

    bin ein stück weiter aber es klappt trotzdem nicht.

    in das plugin translater habe ich nun:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    eingefügt.

    in das plugin wo die description geladen wird:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    auch das funktioniert nicht...kann mir wenigstens mal jemand sagen ob es überhaupt möglich ist?
     
  14. toscho

    toscho Well-Known Member

    Registriert seit:
    4. August 2006
    Beiträge:
    631
    Zustimmungen:
    0
    So, das hat mir keine Ruhe gelassen. Ich habe mich gewundert, warum ich noch nie auf dieses Problem gestoßen bin, bis mir eingefallen ist, daß ich immer mit Objekten arbeite und nie mit globalen Variablen.

    Dies funktioniert:

    Plugin 1
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Plugin 2
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Jetzt beginnt jeder Artikel mit:

    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Der Inhalt der Variablen ist also global zugänglich, verpestet aber nicht den globalen Namensraum.
    Hilft dir das?

    Gruß
    Thomas
     
  15. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    Hallo,

    ok, Tag Nr. 6!

    erstmal danke toscho, dass Du dir die Mühe gemacht hast mein Problem nach zu vollziehen. Ich habe es jetzt ähnlich aufgebaut trotzdem funktioniert es für mich unverständlicherweise noch nicht. Es muss mit etwas zu tun haben, dass ich so noch nie im php erlebt hab. Hier mal meine Schritte, ganz von vorne, ohne globale variablen. ich hoffe du hast Zeit zum lesen:

    1. ich habe eine Datei erstellt names durchreicher.php mit dem Inhalt:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    2. Plugin 1 - Im translation.php plugin habe ich dann ganz oben folgendes eingefügt:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    (per print_r habe ich die Pfade verifiziert und mit echo ein paar tests gemacht. in der If Abfrage bewirkt z.B. echo "test"; exit; , dass auch test aufgrufen wird. d.h. für mich, dass die If Abfrage schonmal funktioniert)

    3. Plugin 2 - ich habe die all in one seo.php dort wo die meta description eingebunden wird mit folgendem ausgestattet:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Zusammenfassung:

    Wenn der Durchreicher included wurde und das ist nur der Fall wenn das Subdirectory z.B /en/ ist, dann gebe keine meta description aus. Wenn das Subdirectory nicht /en/ ist sonder else also z.b. / dann lade die Description.

    Fakt: Wordpress lädt trotzdem bei /en/ und bei / die meta Description.
    Die meta Description kann doch aber nur geladen werden, wenn für die all in one seo.php der Durchreicher "false" ist oder halt "true" wie man es nimmt.

    Es ist aber so, dass ihn das wohl nicht interessiert und an irgendeiner Stelle der Durchreicher wieder false wird. Warum? ich würde das so gerne verstehen....
     
    #15 gachet01, 30. November 2009
    Zuletzt bearbeitet: 30. November 2009
  16. toscho

    toscho Well-Known Member

    Registriert seit:
    4. August 2006
    Beiträge:
    631
    Zustimmungen:
    0
    Ich habe irgendwie das Gefühl, daß dein ganzer Ansatz schief läuft. Zunächst einmal stört mich, daß du den Code der Plugins anfaßt: Wie willst du denn ein vernünftiges Update einspielen?

    Dann sollte die Ausgabenlogik dort abgehandelt werden, wo sie hingehört: im Template.

    Ich würde das Problem daher in der functions.php des Templates abfangen:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Getestet habe ich das freilich nicht; mein Spielblog hat gerade anderes zu tun, und lokal funktioniert der Übersetzer nicht.

    Überhaupt würde ich das Global-Translator-Plugin niemals irgendwo einsetzen. Übelster Spaghetticode, der ohne Vorbehandlung auch noch dem dümmsten Deppen Tür und Tor öffnet. Von XSS hat der Autor wohl noch nie gehört …
     
  17. gachet01

    gachet01 Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    58
    Zustimmungen:
    0
    ok, plugin wird nicht mehr angefasst. Das mit der function.php hat nicht geklappt. Leider...

    Hab jetzt mal im header.php folgendes probiert, denn mittlerweile wäre es für mich auch ok, wenn wp_head einfach nicht geladen wird bei /en/ aber nicht mal das funktioniert...weisst du warum? kannst du mir sagen wie ich es schaffe, dass bei /en/ wp_head(); nicht geladen wird. So muß man die plugins auch nicht kennen. Danke!:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  18. toscho

    toscho Well-Known Member

    Registriert seit:
    4. August 2006
    Beiträge:
    631
    Zustimmungen:
    0
    Seltsam. Setzt dein Server denn die REQUEST_URI für PHP? Ich erinnere mich dunkel, daß das bei manchen Kombinationen (IIS + PHP im CGI-Modus oder so) nicht zuverlässig klappt.