Binden Sie eine function mit einem eigenen Argument, um nach jedem Inhalt dynamisch etwas anzuzeigen

Ich habe eine function, die etwas aus der database mit einer benutzerdefinierten ID greift. Ich muss den Inhalt nach jedem Post / Seiteninhalt zeigen. Also folgte ich @ s_ha_dum’s Lösung von WPSE , wie unten:

function get_my_content( $id ) { $my_content = get_post( $id ); return get_post_meta( $my_content->ID, 'wp_c_field', true ); } $ad_func = get_my_content(1817); echo apply_filters('the_content', $ad_func ); 

Angenommen, der Wert in CF ‘ wp_c_field ‘ ist “das ist der Text”. Der Code oben, anstelle von jedem Post-Inhalt, es ist das Echo der Daten nach dem -Tag als ein Absatz wie:

  

this is the text

Wie kann ich mit diesen Dingen fortfahren, so dass ich mit einer Richtung den Haken so ändern kann, dass der Inhalt vor Inhalt oder nach Inhalt etc. geäußert werden kann?

BEARBEITEN

Bitte beachten Sie, dass die erste function Post von verschiedenen Post-Typen erhalten kann und auch eine andere Post-ID haben kann. So etwas wie:

 function my_content( $content ) global $post; $cfv = get_post_meta( $post->ID, 'wp_c_field', true ); $content = $content . $cfv; return $content; } add_filter( 'the_content', 'cfv_post_content' ); 

innerhalb einer verbindlichen function für den the_content wird für mich nicht funktionieren. Wie Robert Hue als erste Antwort vorgeschlagen hat. Ich brauche mindestens zwei Parameter.

Solutions Collecting From Web of "Binden Sie eine function mit einem eigenen Argument, um nach jedem Inhalt dynamisch etwas anzuzeigen"

Wenn ich es gut verstehe, möchten Sie jedem Post einen Meta-Wert hinzufügen, der aus einem anderen Post stammt, aber letzterer muss dynamisch sein, also in der function nicht fest codiert.

In OP sagen Sie, dass die Post-ID “benutzerdefiniert” ist. Was bedeutet das genau? Wenn es irgendwo gespeichert wird oder als Abfrage var angegeben wird, ist die einfachste Lösung das Verschieben des Codes, der die ausgewählte Beitrags-ID innerhalb der function abruft:

 function get_my_content( $content ) { // assuming post id is saved as option $my_post_id = get_option( 'selected_post' ); $my_post = get_post( $my_post_id ); $my_content = get_post_meta( $my_content->ID, 'wp_c_field', true ); return $content . $my_content; } add_filter( 'the_content', 'get_my_content' ); 

oder

 function get_my_content( $content ) { // assuming post id is passed as query var: example.com?thepost=xxx $my_post_id = filter_input( INPUT_GET, 'thepost', FILTER_SANITIZE_NUMBER_INT ); $my_post = get_post( $my_post_id ); $my_content = get_post_meta( $my_content->ID, 'wp_c_field', true ); return $content . $my_content; } add_filter( 'the_content', 'get_my_content' ); 

Es gibt verschiedene Möglichkeiten, wie ein Benutzer eine Beitrags-ID auswählen kann, ohne genau zu wissen, wie Sie den Beitrag auswählen. Ich kann nicht spezifischer sein, aber berücksichtigen Sie den allgemeinen Vorschlag, den Abruf von Post-IDs innerhalb des callbacks zu verschieben.

Wenn Sie aus irgendeinem Grund den Callback nicht bearbeiten können, um den Post-ID-Abruf darin zu verschieben, aber die ausgewählte ID in einer Variablen gespeichert haben, können Sie eine PHP 5.3+ -Versiegelungs- und -Use- statement verwenden :

 // your original function function get_my_content( $id ) { $my_content = get_post( $id ); return get_post_meta( $my_content->ID, 'wp_c_field', true ); } $selected_id = 1817; // user-selected id, stored in a variable add_filter( 'the_content', function( $content ) use( $selected_id ) { return $content . get_my_content( $selected_id ); } );