web-dev-qa-db-fra.com

Est-il possible de créer un shortcode qui interrogera une publication basée sur des taxonomies?

Je travaille sur un site qui répertoriera quelques centaines de produits et nous voulions pouvoir afficher rapidement/facilement des produits spécifiques sur une page basée sur les taxonomies. J'ai fait des recherches et je pensais être sur la bonne voie.

Premièrement, j'ai trouvé cet article sur digwp.com qui, à mon avis, allait bien fonctionner. Je ne peux pas l'obtenir pour tirer les messages basés sur la taxonomie bien - juste post_type. Le type de message est "Articles utilisés" et j'ai créé une taxonomie nommée Couleur dans laquelle l'une des limaces était en rouge.

[loop the_query="post_type=used-items&color=red&ord=ASC"]

J'ai aussi trouvé ce plugin pour faire une requête par shortcode, mais la même situation avec elle ne tire pas par taxonomie.

Ma question Est-ce que quelqu'un sait ce que je peux faire pour extraire des articles en fonction de leur type/taxonomies (utiliser plusieurs requêtes à la fois) directement à partir d'une page WordPress? Nous voulons pouvoir interroger rapidement les produits sans avoir à programmer la requête dans un modèle de page pour chaque option possible.

1
Adam

voici un shortcode simple qui peut gérer les taxonomies, les types de publication et tout autre paramètre pris par WP_Query:

add_shortcode('posts','posts_shortcode_handler');
function posts_shortcode_handler($atts, $content){
    extract(shortcode_atts(array(
        'posts_per_page' => '5',
    ), $atts));

    global $post;
    $temp = $post;

    $posts = new WP_Query($atts);
    $retVal = '';
    if ($posts->have_posts()){
        while ($posts->have_posts()){
            $posts->the_post();

            // these arguments will be available from inside $content
            $parameters = array(
                'PERMALINK' => get_permalink(),
                'TITLE' => get_the_title(),
                'CONTENT' => get_the_content(),
                'CATEGORIES' => get_the_category_list(', '),
                'THUMBNAIL' => get_the_post_thumbnail()
            );

            $finds = $replaces = array();
            foreach($parameters as $find => $replace){
                $finds[] = '{'.$find.'}';
                $replaces[] = $replace;
            }
            $retVal .= str_replace($finds, $replaces, $content);

        }
    }
    wp_reset_query();
    $post = $temp;
    return $retVal;
}

usage:

[posts post_type="page" posts_per_page=5 taxonomy_name="taxonomy_term"]
    <h5><a href="{PERMALINK}">{TITLE}</a></h5>
    <div>{THUMBNAIL} <br />{CONTENT}</div>
[/posts]

remplacez page par votre nom de type d'article, taxonomy_name par votre nom de taxonomie et taxonomy_term par le terme taxonomy

4
Bainternet