Sie müssen einen Shortcode für Anzeigeposts auf einer anderen Seite erstellen. Shortcode muss im Wp-Editor hinzugefügt werden.
Ich habe diesen Code für Anzeigeposts auf einer anderen Seite erstellt:
array('job') ); $the_query = new WP_Query( $args ); ?> have_posts() ) : $the_query->the_post(); ?> ID ) { ?> <a href="https://wordpress.stackexchange.com/questions/276597/shortcode-for-display-posts-in-wp-editor/" class="jobs"> ID ) { ?>
Es funktioniert wie erwartet in PHP-Vorlage. Aber wie man diesen Code in Shortcode-function für die Verwendung [jobs]
hinzufügen?
Einen Shortcode zu deklarieren ist so einfach wie das:
add_shortcode('jobs', 'callback_function'); function callback_function(){ $content = ''; $args = array( 'post_type' => array('job'), 'posts_per_page' => 20 ); $the_query = new WP_Query( $args ); if ($the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); if ( 683 !== get_the_ID() ) { $content .= ''; } $content .= ' '.get_the_title().'
'. get_the_content() .'
'; if ( 683 !== get_the_ID() ) { $content .= ''; } } } wp_reset_postdata(); return ' '.$content.' '; }
Wickeln Sie Ihren Code in eine function und ersetzen Sie callback_function
durch den Namen Ihrer function. Dann kannst du es im Editor als [shortcode-name]
.
Sie sollten jedoch beachten, dass Sie das echo
innerhalb einer Shortcode-function verwenden können. Sie sollten Ihren Inhalt in einer Variablen speichern und dann die Variable zurückgeben.
Das bedeutet, dass Sie keine functionen verwenden können, die den Inhalt wiedergeben, z. B. the_content()
oder the_title()
. Sie sollten stattdessen get_the_content()
oder get_the_title()
verwenden.
Hinweis: Der Grund, dass ich nicht apply_filters('the_content', get_the_contnet());
verwendet apply_filters('the_content', get_the_contnet());
Wenn Sie diesen Shortcode in einem Post verwenden und der Post dann in dieser Schleife enthalten ist, ist diese Schleife eine unendliche, da der Filter den Shortcode erneut ausführen wird, der einen verschachtelten Shortcode usw. ausführt.