Zusätzlicher Inhalt alle x Kommentare

Hast du eine Idee davon, ist es möglich, irgendeinen Inhalt hinzuzufügen, sagen wir mal 5 Kommentare in WordPress? Ich könnte das “more fields” -Plugin verwenden, aber es würde Inhalt nach jedem Kommentar erstellen. So etwas wie Antworten mit Werbung, die alle 5 Forum Antworten in PhpBB aber für WordPress.

z.B

- comment 1 - comment 2 - ... - comment 5 - MY CONTENT - comment 6 - ... - comment 10 - MY CONTENT - comment 11 

Solutions Collecting From Web of "Zusätzlicher Inhalt alle x Kommentare"

Hier ist ein Ansatz, der die folgenden benutzerdefinierten Eingabeargumente verwendet:

 wp_list_comments( [ '_inject_period' => 5, '_inject_content' => [ 'AAA', 'BBB', 'CCC' ], ] ); 

wo wir den inject-Zeitraum einstellen und den zu injizierenden Inhalt definieren.

Dies könnte durch das folgende Demo-Plugin unterstützt werden, das die class \Walker_Comment und die Methode start_el() :

 < ?php /** * Plugin Name: Comment Content Injector * Plugin URI: https://wordpress.stackexchange.com/a/251247/26350 */ add_filter( 'wp_list_comments_args', function( $args ) { // Period - Validation if( ! isset( $args['_inject_period'] ) || ! is_int( $args['_inject_period'] ) || 0 === $args['_inject_period'] ) return $args; // Content - Validation if( ! isset( $args['_inject_content'] ) || ! is_array( $args['_inject_content'] ) ) return $args; // Custom Walker $args['walker'] = new class extends \Walker_Comment { public function start_el( &$output, $comment, $depth=0, $args=array(), $id=0 ) { static $instance = 0; static $key = 0; $tag = ( 'div' == $args['style'] ) ? 'div' : 'li'; // see Walker_Comment // Inject custom content periodically if( 0 == ++$instance % absint( $args['_inject_period'] ) && isset( $args['_inject_content'][$key] ) ) { $output .= sprintf( '<%s class="injected">%s', $tag, $args['_inject_content'][$key], $tag ); $key++; } // Parent method parent::start_el( $output, $comment, $depth, $args, $id ); } }; return $args; } ); 

Wir möchten vielleicht auch dies auf eine gegebene Kommentartiefe einstellen, indem wir die Variable $depth überprüfen. Wir könnten es auch nach der Elternmethode injizieren, aber momentan ist es noch nicht so weit.

Beachten Sie, dass wir hier eine anonyme class verwenden. Hier finden Sie weitere Informationen darüber, wie Sie es ohne es erweitern können.

Ein anderer Ansatz wäre, den Filter ” comments_array zu verwenden oder, wenn Sie einen benutzerdefinierten callback verwenden, ihn an Ihre Anforderungen anzupassen.

Hoffe, Sie können es weiter an Ihre Bedürfnisse anpassen!