Wie würde ich einen Shortcode erstellen, um einen benutzerdefinierten Beitrag in einer Seite oder einem regulären Beitrag anzuzeigen?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/9729

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)?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top