web-dev-qa-db-ja.com

分類法に基づいて投稿をケリーするショートコードを作成することは可能ですか?

私は数百の製品をリストアップするサイトに取り組んでいます、そして我々は分類法に基づくページの上に特定の製品を速く/簡単に見せることができたかったです。私はいくつかの研究をしていて、私は正しい軌道に乗っていると思った。

最初に、 digwp.com のこの記事を見つけました。分類法に基づいて投稿を取得することはできません - ただpost_type。投稿タイプは "Used Items"で、ナメクジの1つがRedであるColorという名前の分類法を作成しました。

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

私は ショートコードで問い合わせをするためのこのプラグイン を見つけました、しかしそれが分類学によって引っ張らないのと同じ状況。

私の質問WordPressページから直接投稿タイプ/分類法に基づいて投稿を取得する方法を知っていますか(各クエリを複数使用することになります)。可能なオプションごとにクエリをページテンプレートにプログラムしなくても、商品をすばやくクエリできるようにしたいです。

1
Adam

これは、分類法、投稿タイプ、および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;
}

使用法:

[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]

pageをあなたの投稿タイプ名に、taxonomy_nameをあなたの分類名に、そしてtaxonomy_termを分類用語に置き換えてください。

4
Bainternet