是否可以查询指定帖子的类别?

时间:2017-01-19 作者:Jared Counts

我有一个页面,我正在设置不同的部分来显示帖子。我希望页面的大部分都是用户可编辑的,所以我正在使用我编写的一个快捷码填充各个部分。示例:

这是:

[diversecity section="sounds-flavors" ids=""]
变成这样:

$qs = new WP_Query(
    array(
        \'posts_per_page\' => 3,
        \'category_name\' => \'sounds-flavors\'
    )
);
并返回“Sounds&Flavors”类别中的3篇帖子。

但是,用户希望能够突出显示每个部分中的某些文章,因此我添加了ids 短代码中的变量。其想法是,用户可以将ID放在一个逗号分隔的列表中,这些帖子将被放在类别列表的前面。

这是:

[diversecity section="sounds-flavors" ids="12345,12678"]
变成这样:

$qs = new WP_Query(
    array(
        \'posts_per_page\' => 3,
        \'category_name\' => \'sounds-flavors\',
        \'post__in\' => array(12345,12678)
    )
);
但只返回指定的两个帖子。所需输出如下:

<article id="12345">{First ID Specified}</article>
<article id="12678">{Second ID Specified}</article>
<article id="12980">{Most Recent Post from the Sounds & Flavors category}</article>
我知道我可以做两个查询(一个用于指定的帖子,另一个用于任何类别的帖子来填充其余的帖子,但是否可以使用WP\\u查询在一个帖子中完成?

我基本上是在模仿粘性帖子的行为,所以从技术上讲应该是可行的。有什么想法吗?

1 个回复
SO网友:Francisco Salazar

应使用自定义选择查询:

$querystr = "
SELECT * FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id)
WHERE ($wpdb->terms.name = \'sounds-flavors\' OR $wpdb->posts.ID IN(12345,12678))
AND $wpdb->term_taxonomy.taxonomy = \'category\'
AND $wpdb->posts.post_status = \'publish\'
AND $wpdb->posts.post_type = \'post\'
LIMIT 3
";
请看这里:https://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query当做

相关推荐

是否可以取消对特定帖子类型的POSTS_PER_PAGE限制?

我想知道我是否可以取消特定帖子类型的posts\\u per\\u页面限制。在存档中。php页面我显示不同的帖子类型,对于特定的“出版物”帖子类型,我想显示所有帖子。我如何在不影响传统“post”类型的情况下实现这一点?