Wie würde ich einen Shortcode erstellen, um einen benutzerdefinierten Beitrag in einer Seite oder einem regulären Beitrag anzuzeigen?
-
16-10-2019 - |
Frage
Ich möchte einen Shortcode erstellen, der Informationen für einen benutzerdefinierten Beitrag extrahiert und in einer Seite oder einem regulären Beitrag anzeigt.
Spezifischer Anwendungsfall: Ich habe einen benutzerdefinierten Post -Typ "Film" für eine Filmfestival -Website. Die Filme werden mit ihrem eigenen Single-FileM.Php angezeigt, aber gelegentlich möchten die Site-Besitzer einen Beitrag oder eine Seite schreiben, auf der ein bestimmter Film erwähnt wird, und möchten in der Lage sein, Ausschnitte der bereits eingegebenen Informationen zu ziehen (z. B. , Filmname, Buchungsinformationen usw.). Dies würde in einer "Box" am unteren Rand des Beitrags gehen, und ich möchte es ihnen leicht machen, indem ich eine Art Shortcode bereitstellt.
Wie würde ich das machen? Irgendwelche empfohlenen Ressourcen/Tutorials, um mich auf den richtigen Weg zu bringen? Was sollte ich mir bewusst sein (z. B. mehrere Schleifen in einem Beitrag)?
Lösung
Es gibt großartige Tutorials über Shortcodes im gesamten Web und einige gute Beispiele hier
Aber nur um dich loszuwerden:
add_shortcode('film_q', 'film_shortcode_query');
function film_shortcode_query($atts, $content){
extract(shortcode_atts(array( // a few default values
'posts_per_page' => '1',
'post_type' => 'film',
'caller_get_posts' => 1)
, $atts));
global $post;
$posts = new WP_Query($atts);
$output = '';
if ($posts->have_posts())
while ($posts->have_posts()):
$posts->the_post();
$out = '<div class="film_box">
<h4>Film Name: <a href="'.get_permalink().'" title="' . get_the_title() . '">'.get_the_title() .'</a></h4>
<p class="Film_desc">'.get_the_content().'</p>';
// add here more...
$out .='</div>';
/* these arguments will be available from inside $content
get_permalink()
get_the_content()
get_the_category_list(', ')
get_the_title()
and custom fields
get_post_meta($post->ID, 'field_name', true);
*/
endwhile;
else
return; // no posts found
wp_reset_query();
return html_entity_decode($out);
}
und um es in einen beliebigen Beitrag/eine Seite einzuleiten:
[film_q p=FILM_POST_ID]
Ändern Sie einfach film_post_id in die tatsächliche Filmpost -ID.
Hoffe das hilft
Andere Tipps
Versuchen Sie aus Dieses Tutorial.
Machen Sie in der Rückruffunktion eine Custom_query (oder verwenden Sie get_post) für den Beitrag und extrahieren Sie nur die für Sie relevanten Werte. (Dh: Titel, Auszug ...)
Beispiel Shorcode
[film id=10]
Verwenden Sie ID in Ihrer Funktion, um den Inhalt des Films zu retive.