有没有可能创建一个根据分类来查询帖子的短代码?

时间:2012-04-03 作者:Adam

我正在一个网站上工作,该网站将列出几百种产品,我们希望能够快速/轻松地在基于分类的页面上显示特定的产品。我一直在做一些研究,认为我的思路是正确的。

首先,我发现this article on digwp.com 我觉得这很管用。但我无法根据分类法来获取帖子,只能使用post\\u类型。帖子类型是“Used Items”,我创建了一个名为Color的分类法,其中一个slug是红色的。

[loop the_query="post_type=used-items&color=red&ord=ASC"]
我也found this plugin 用于按短代码进行查询,但情况与不按分类法进行查询相同。

My question有人知道我能做些什么来直接从WordPress页面根据帖子类型/分类(将使用多个查询)拉帖子吗。我们希望能够快速查询产品,而无需将查询编程到每个可能选项的页面模板中。

1 个回复
SO网友:Bainternet

下面是一个简单的短代码,它可以处理分类法、帖子类型和WP\\U查询采用的任何其他参数:

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]
将页面替换为帖子类型名称,将taxonomy\\u name替换为taxonomy名称,将taxonomy\\u term替换为taxonomy term

结束

相关推荐

使用分页的多个WP_QUERY循环

关于这一点,还有一些其他问题(对于很多人来说,WP\\u查询分页似乎是一个巨大的问题),因此我正试图缩小如何使其发挥作用的范围。我可以使用以下代码创建一个分页的自定义循环:// http://weblogtoolscollection.com/archives/2008/04/19/paging-and-custom-wordpress-loops/ $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query();&#x