web-dev-qa-db-fra.com

Comment appeler des catégories de taxonomie personnalisées avec des codes courts

Je viens juste de résoudre une question ici: Comment afficher les publications d'une seule catégorie dans une taxonomie personnalisée

Maintenant, je me demande comment prendre ce code:

<?php
    $args = array(
        'posts_per_page' => 1,
        'post_type' => 'inventory',
        'tax_query' => array(
            array(
                'taxonomy' => 'inventory-category',
                'field' => 'slug',
                'terms' => array( 
                    'bulk-racks' 
                )
            )
        )       
    );
query_posts( $args ); while ( have_posts() ): the_post();

// do stuff here
?>

<?php endwhile; ?>

et appelez-le en utilisant des codes courts, par exemple pour afficher la catégorie des racks en vrac en utilisant ceci ou quelque chose de similaire [inventory-category = "en vrac"]

Je sais comment créer un shortcode de base, mais je ne sais pas comment écrire la fonction qui renverrait les publications en fonction de l'entrée du nom de la catégorie de shortcode.

Encore une fois, toute aide serait grandement appréciée.

2
maikunari

Jetez un coup d'œil à catégorie post shortcode pour vous faire une idée. Voici le plug-in avec des modifications mineures permettant d'appeler votre type de message et votre taxonomie:

// Taxonomy category shortcode
function cat_func($atts) {
    extract(shortcode_atts(array(
            'class_name'    => 'cat-post',
            'totalposts'    => '-1',
            'category'      => '',
            'thumbnail'     => 'false',
            'excerpt'       => 'true',
            'orderby'       => 'post_date'
            ), $atts));

    $output = '<div class="'.$class_name.'">';
    global $post;
    $args = array(
        'posts_per_page' => $totalposts, 
        'orderby' => $orderby,
        'post_type' => 'inventory',
        'tax_query' => array(
            array(
                'taxonomy' => 'inventory-category',
                'field' => 'slug',
                'terms' => array( $category)
            )
        ));
    $myposts = NEW WP_Query($args);


    while($myposts->have_posts()) {
        $myposts->the_post();
        $output .= '<div class="cat-post-list">';
        if($thumbnail == 'true') {
        $output .= '<div class="cat-post-images">'.get_the_post_thumbnail($post->ID, 'thumbnail').'</div>';
        }
        $output .= '<div class="cat-content"><span class="cat-post-title"><a href="'.get_permalink().'">'.get_the_title().'</a></span>';
        if ($excerpt == 'true') {
            $output .= '<span class="cat-post-excerpt">'.get_the_excerpt().'</span>';
        }
        $output .= '</div>
            <div class="cat-clear"></div>
        </div>';
    };
    $output .= '</div>';
    wp_reset_query();
    return $output;
}
add_shortcode('inventory-category', 'cat_func');

usage :

il suffit de mettre ce shortcode dans votre post ou vos pages

[inventory-category totalposts="3" category="bulk-racks" thumbnail="true" excerpt="true" ]
  • totaux - votre nombre total de messages à afficher. la valeur par défaut est -1
  • catégorie - catégorie limace. utiliser des virgules pour plusieurs slugs
  • thumbnail - Définissez true si vous souhaitez afficher une miniature. la valeur par défaut est false
  • extrait - Définissez la valeur true si vous souhaitez afficher excertp. défaut est vrai
  • orderby - votre message sera commandé par. post_date par défaut. check http://codex.wordpress.org/Template_Tags/get_posts pour plus de détails
5
Bainternet