我是WordPress的新手,正在尝试编辑现有主题(Materialis Pro),以允许我显示最新帖子,但按类别进行细化。
我已经编辑了简码,以便可以从编辑器中传递类别,并且可以在php中检索此值。
用于显示最新帖子的现有代码仅显示最后3个帖子,我想在类别中添加一个categoryId,因此我们仅看到类别X中最近3个帖子。
插件中的现有代码执行以下操作:
$recentPosts = new WP_Query();
$recentPosts->query('posts_per_page=' . $post_numbers . ';post_status=publish;post_type=post;ignore_sticky_posts=1;');
通过在线阅读,它应该像将cat = 4或类似的内容传递给该查询一样简单:
$recentPosts->query('cat=4;posts_per_page=' . $post_numbers . ';post_status=publish;post_type=post;ignore_sticky_posts=1;');
但是当我这样做时,我什么也没回来,没有错误,只有帖子。奇怪的是,如果我将其添加到查询的末尾,则会得到结果,但就像完全忽略了该类别。
我已经使用我在短代码中设置的类别ID成功获得了该类别,
$theCategory = get_the_category_by_ID($attrs['shortcode_catId']);
但是我不确定如何将其用作过滤器或将其添加到查询中。 任何指针都非常感谢。
我真的认为这应该很简单,但是我错了,或者至少我没有看到按类别进行过滤或排序的正确方法。
答案 0 :(得分:1)
说实话,这是我第一次看到WP_Query类被这样使用,所以我不完全了解发生了什么。尝试以下方法:
$args = array(
'cat' => 4,
'posts_per_page' => $post_numbers,
'post_status' => 'publish',
'post_type' => 'post',
'ignore_sticky_posts' => 1
);
$recentPosts = new WP_Query($args);
if ( $recentPosts->have_posts() ) {
// ... rest of the code
或者,您也可以使用category__in
参数:
$args = array(
'category__in' => array(4),
'posts_per_page' => $post_numbers,
'post_status' => 'publish',
'post_type' => 'post',
'ignore_sticky_posts' => 1
);
$recentPosts = new WP_Query($args);
if ( $recentPosts->have_posts() ) {
// ... rest of the code