it-swarm.com.de

Benutzerdefinierte Post-Typ-Schleife innerhalb des Shortcodes

Ich bin wirklich ratlos, warum das nicht funktioniert:

Ich verwende einen Shortcode, um eine Abfrage zu einem benutzerdefinierten Beitragstyp + Taxonomie anzuzeigen. Dies ist das Segment davon:

        // - arguments -
        $args = array(
            'post_type' => 'customposttypename',
            'taxonomyname' => 'alpha',
            'post_status' => 'publish',
        );

        // - query -
        $my_query = null;
        $my_query = new WP_query($args);
        while ($my_query->have_posts()) : $my_query->the_post();

        // - variables -
        $custom = get_post_custom($post->ID);

... und dann gehen die Variablen weiter. Die Sache ist jedoch, wenn ich die Schleife ausführe, zeigt sie mir den gesamten Standard-Post-Inhalt (z. B. Titel, Inhalt usw.), weigert sich jedoch, benutzerdefinierten Post-Typ-Inhalt anzuzeigen, und stoppt in der letzten Zeile oben (Zeile 145). dh $custom = get_post_custom($post->ID); gibt mir den folgenden Fehler ..

Hinweis: Undefinierte Variable: Schreiben Sie in C:\xampplite ...\functions.php in Zeile 145

Hinweis: Es wird versucht, die Eigenschaft eines Nicht-Objekts in C:\xampplite ...\functions.php in Zeile 145 abzurufen

Dann hier unten zeigt es mir normalerweise den Titel, den Inhalt usw. (nur keinen benutzerdefinierten Beitragstyp-Inhalt)

Hat jemand eine Ahnung, was ich falsch mache?

Vielen Dank!

1
Noel Tock

Hinweis: Es wird versucht, die Eigenschaft eines Nicht-Objekts abzurufen

Würde anzeigen, dass $post in Ihrer Funktion keinen Gültigkeitsbereich hat. Eine einfache Lösung wäre, $post so zu globalisieren, dass er Gültigkeit hat und den Fehler effektiv behebt.

Wenn Sie jedoch eine Abfrage erstellen oder die Schleife ausführen und die Methode the_post aufrufen, erhalten Sie Zugriff auf die WordPress-Vorlagen-Tags .

Stattdessen können Sie in globalen Anweisungen get_the_ID() aufrufen, die natürlich die ID des angegebenen Posts enthalten sollten (dh den aktuellen Post für diese Iteration der Schleife).

Aktualisieren Sie Ihre Problemzeile zum Lesen.

$custom = get_post_custom( get_the_ID() );

Und das sollte das Problem klären, natürlich würde es auch funktionieren, $post scope innerhalb der Funktion anzugeben, es würde einfach nicht so poetisch aussehen! ..;)

Kleine Nebenfrage an den Fragesteller: Wonach suchen Sie, wenn Sie get_post_custom anrufen? Suchen Sie nach bestimmten Metaschlüsseln oder durchlaufen Sie alle gefundenen Metaelemente in einer Schleife? Möglicherweise gibt es dort noch Verbesserungspotenzial (falls Sie interessiert sind).

3
t31os