it-swarm.com.de

So erhalten Sie die Post-ID mit der Funktion "Filter hinzufügen"

Ich schreibe ein Plugin und versuche herauszufinden, wie Daten basierend auf benutzerdefinierten Metainformationen zum Ende eines Posts hinzugefügt werden können.

So habe ich das bisher gemacht:

add_filter('the_content', 'AppendMeta');

Und hier ist die "AppendMeta" -Funktion

AppendMeta($content) {
    echo $content; // Echo out post content
    $PersonName = get_post_meta($post->ID, 'PersonName', true);
    echo 'Person: ' . $PersonName;
}

Dieser Code funktioniert, wenn ich "$ post-> ID" durch die ID des Posts ersetze. Er muss jedoch auf der Grundlage des Posts funktionieren, in dem der Benutzer gerade navigiert. Wie würde ich die Post-ID als Parameter übergeben? $ post-> ID funktioniert in diesem Szenario nicht und ich kann nicht herausfinden, warum.

3
Talon

Egal, ich habe herausgefunden, dass ich get_the_ID(); verwenden kann.

Diese Funktion gibt die Beitrags-ID im the_content-Filter zurück. Die Funktion deklariert einfach das globale Objekt $post und gibt seine ID zurück.

add_filter('the_content', 'wpse51205_content')
wpse51205_content($content) {
    echo $content; // Echo out post content
    $PersonName = get_post_meta(get_the_ID(), 'PersonName', true);
    echo 'Person: ' . $PersonName;
}

Wenn Sie get_the_ID() nicht verwenden möchten, müssen Sie lediglich das Objekt $post global deklarieren, bevor Sie es verwenden:

add_filter('the_content', 'wpse51205_content')
wpse51205_content($content) {
    global $post;
    echo $content; // Echo out post content
    $PersonName = get_post_meta($post->ID), 'PersonName', true);
    echo 'Person: ' . $PersonName;
}
8
Talon

the_ID() soll nur innerhalb der Schleife verwendet werden, sonst können Sie sich nicht darauf verlassen. Verwenden Sie besser das Objekt $GLOBALS['post'] in Ihrem Funktionsaufruf.

4
Ashfame