Zeige x wenn Inhalt der Unterseite = y

  • Ich zeige alle Unterseiten zu der aktuellen Seite und verwende dazu diesen Code:

    Ich möchte das jetzt erweitern. Es soll ein Hinweis erscheinen, wenn eine Unterseite den Code "%[mygal%" enthält, also auf der Unterseite eine Galerie eingebunden ist. Es wäre toll, wenn mir da jemand auf die Sprünge helfen bzw. einen entsprechenden Codeschnipsel liefern könnte.

    PS. Eingesetzt wird das hier.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • gib den Unterseiten die die Gallerie haben ein benutzerdefiniertes Feld

    Beispiel:
    gallerie

    wert: irgendwas Hautpsache nicht leer und

    dann lass abfragen

    if dieses Feld nicht leer dann

    lg

  • Code
    $pageChildren = $wpdb->get_results("
            SELECT *
            FROM $wpdb->posts
            WHERE post_parent = ".$post->ID."
            AND post_type = 'page'
            [COLOR="RoyalBlue"]AND post_content LIKE '%[mygal%'[/COLOR]
            ORDER BY menu_order
        ", 'OBJECT');


    Damit würdest du als Ergebbnis nur die Seiten bekommen, die vermutlich eine Galerie haben...

    Oder du fragst es mit einer extra Abfrage ab (wass ain Däutch). Könnte in etwa so aussehen (ungetestet)

    PHP
    <?php
    $postIdNr = $post->ID
    $postDaten = get_post($postIdNr, ARRAY_A);
    if (preg_match("/[mygal/i", $postDaten['post_content'])) {
      echo 'Ich enthalte eine Galerie...';
    } else {
      echo 'Ich nicht :-(';
    }
    ?>


    Vermutlich ist Monika's Lösung im Endeffekt aber einfacher und führt auch zum Ziel. :)

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Vielen Dank Ihr beiden, sorry für die späte Antwort.

    Monika: vielen Dank, das wäre eine Möglichkeit, da ist aber die Schwierigkeit, dass es sich um 233 Posts handelt, die dann alle noch einmal angefasst werden müssten. Das möchte ich eigentlich vermeiden.

    Alphawolf:

    PHP
    <?php
    $postIdNr = $post->ID;
    $postDaten = get_post($postIdNr, ARRAY_A);
    if (preg_match("\[mygal\", $postDaten['post_content'])) {
      echo 'Ich enthalte eine Galerie...';
    } else {
      echo 'Ich nicht :-(';
    }
    ?>

    Genau das ist nach meinem Geschmack, in der zweiten Zeile fehlte ein Semikolon, jetzt wird alles ohne Meckern ausgeführt, es kommt aber bei allen Posts zu einem falschen Suchergebnis, also Ausgabe von "ich nicht ...".

    Dann dachte ich, dass

    PHP
    <?php
    [COLOR=Red]$postIdNr = $pageChild->ID;[/COLOR]
    $postDaten = get_post($postIdNr, ARRAY_A);
    if (preg_match("/[mygal/i", $postDaten['post_content']))
    {
      echo 'Ich enthalte eine Galerie...';
    } else {
      echo 'Ich nicht :-(';
    }
    ?>

    irgendwie besser aussieht, weil es ja darum geht, den Inhalt dieser Seite vom Inhalt der untergeordeneten Seiten abhängig zu machen, ist aber leider auch nicht die Lösung.

    Dein erster Vorschlag den SELECT-Befehl um %[mygal]% zu erweitern funzt, ist aber leider keine Lösung, weil doch schon alle Beiträge in der Übersicht angezeigt werden sollen.

    Ich wäre Dir oder jemand anders ganz schön dankbar, wenn er oder sie die Abfrage zum Laufen brächte.

    Einen kleinen Lerneffekt hatte ich heute abend schon, aber irgendwie glaube ich fast, dass ich es nie lerne. :(

    Viele Gruesse von der sonnigen Ostsee
    HelG

  • Naja, eigentlich hatten wir's ja schon. :) Jetzt muss nur noch mein dahingeschluderter Code in deinen eingefügt werden. ^^

    Grün markiert wäre mein in deinen vorhandenen eingefügter Code:


    Sollte funktionieren. ;)

    edit. Da du mit setup_postdata ja schon die Daten holst, wäre es vllt performanter, wenn du statt

    PHP
    if (preg_match('/^\[mygal/i', $postDaten['post_content'])) {


    das benutzt

    PHP
    if (preg_match('/^\[mygal/i', $pageChild->post_content)) {

    wpseek.com - Die WordPress-Code-Suchmaschine

    Einmal editiert, zuletzt von Alphawolf (24. März 2008 um 20:03)

  • Ich bin Dir sehr dankbar für Dein Engagement. Leider geht das aber nicht.

    Es kommt grundsätzlich immer ein falsches Ergebnis zurück, egal ob [mygal enthalten ist oder nicht. Also Ausgabe von "Ich nicht :(".

    Ich hab mal in die DB reingeschaut. Da steht das konkret als Text so drin. Hab auch schon ein bisschen mit anderen Suchbegriffen rumprobiert. Leider ohne Erfolg. Wäre echt nett, wenn Du noch ein bisschen daran rumschrauben könntest.

    Oder vielleicht fällt jemand anders eine Problemlösung ein?

    Nochmal in Kurzform: Ich möchte auf einer Seite in einer Liste der Unterseiten dieser Seite anzeigen, ob auf den jeweiligen Unterseiten eine Galerie ( [mygal ... ] ) enthalten ist oder nicht.

  • Es kommt grundsätzlich immer ein falsches Ergebnis zurück, egal ob [mygal enthalten ist oder nicht. Also Ausgabe von "Ich nicht :(".


    Hmm, das sollte grundsätzlich so funktionieren. Kann man sich die aktuelle Version meines/unseres Scripts irgendwo anschauen?

    Notfalls teste ich das später auch mal bei mir. :)

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Kann man sich die aktuelle Version meines/unseres Scripts irgendwo anschauen?

    Ist schon DEIN Skript. ;)
    Schleswig-Flensburg » Aktion Offener Garten

    Dieser Code steht drin:

    PHP
    <?php
            $postDaten = get_post($pageChild->ID, ARRAY_A);
            if (preg_match('/^\[mygal/i', $pageChild->post_content)) {
              echo ':(';
            } else {
              echo ':)';
            }
            ?>

    Also der Spiess umgedreht, :) bei else, sieht dann besser aus ...

  • Okay, bei dir bestehen die Seiten nicht NUR aus Galerien, sind also nicht gleich am Anfang des Inhalts zu finden, probiere es daher hiermit:

    PHP
    <?php
            $postDaten = get_post($pageChild->ID, ARRAY_A);
            if (preg_match('/\[mygal/i', $pageChild->post_content)) {
              echo ':(';
            } else {
              echo ':)';
            }
            ?>

    wpseek.com - Die WordPress-Code-Suchmaschine

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!