Afișarea unui tip de postare personalizat folosind shortcode

8 apr. 2015, 09:35:19
Vizualizări: 38.6K
Voturi: 5

Am creat un tip de postare personalizat pentru tema mea WordPress și o pagină unde sunt afișate aceste tipuri de postări personalizate. Dar știe cineva cum să creez un shortcode care să afișeze postările unui tip de postare personalizat?

1
Comentarii

Posibil da, dar ce ai încercat tu singur să rezolvi această problemă și unde te-ai blocat?

Pieter Goosen Pieter Goosen
8 apr. 2015 10:15:32
Toate răspunsurile la întrebare 1
1

Cred că, în esență, întrebarea ta este cum să interoghezi postările unui tip de postare personalizat într-un shortcode. Ar trebui să arunci o privire în secțiunea WP_Query din WordPress: https://codex.wordpress.org/Class_Reference/WP_Query

În exemplul meu de cod, creez un shortcode care afișează titlul ultimelor postări publicate de tipul 'my-custom-post-type':

<?php
    add_shortcode( 'shortcodename', 'display_custom_post_type' );

    function display_custom_post_type(){
        $args = array(
            'post_type' => 'my-custom-post-type',
            'post_status' => 'publish'
        );

        $string = '';
        $query = new WP_Query( $args );
        if( $query->have_posts() ){
            $string .= '<ul>';
            while( $query->have_posts() ){
                $query->the_post();
                $string .= '<li>' . get_the_title() . '</li>';
            }
            $string .= '</ul>';
        }
        wp_reset_postdata();
        return $string;
    }
?>

Deoarece un shortcode este executat în buclă, ar trebui să folosești wp_reset_postdata() după ce ai terminat cu interogarea ta, astfel încât Bucla Principală să funcționeze din nou conform așteptărilor. Mai multe informații despre această funcție le găsești aici: https://codex.wordpress.org/Function_Reference/wp_reset_postdata

Sper că acest lucru îți oferă un punct de plecare.

8 apr. 2015 10:14:08
Comentarii

ar trebui să folosești wp_reset_postdata după o buclă secundară. wp_reset_query este necesar doar pentru a restaura variabila globală $wp_query, care nu a fost suprascrisă în acest caz. wp_reset_query apelează intern și wp_reset_postdata, motiv pentru care funcționează și aici, dar este inutil.

Milo Milo
11 feb. 2016 18:15:58