Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 如何为自定义帖子类型的标签启动wp_查询?_Wordpress - Fatal编程技术网

Wordpress 如何为自定义帖子类型的标签启动wp_查询?

Wordpress 如何为自定义帖子类型的标签启动wp_查询?,wordpress,Wordpress,我想获取所有带有“热”标签的文章类型帖子 我正在使用下面的查询,但它返回所有post 查询帖子(数组('posts\u per\u page'=>-1,'post\u type'=>'article\u type','order'=>'ASC','tags'=>数组('hot')); 帮帮我,提前谢谢 改用 至于你的代码,没有所谓的“标签”。如果要查询多个标记,请使用“”中的“标记”。如果没有,请使用'tag'。本例在中使用了'tag\uu: <?php $q = new WP_Qu

我想获取所有带有“热”标签的文章类型帖子
我正在使用下面的查询,但它返回所有post


查询帖子(数组('posts\u per\u page'=>-1,'post\u type'=>'article\u type','order'=>'ASC','tags'=>数组('hot'));


帮帮我,提前谢谢

改用

至于你的代码,没有所谓的“标签”。如果要查询多个标记,请使用“”中的“标记”。如果没有,请使用
'tag'
。本例在中使用了
'tag\uu:

<?php
$q = new WP_Query(array(
    'posts_per_page' => -1,
    'post_type'=>'article_type',
    'order' => 'ASC',
    'tag__in'=>array('hot')
));
if($q->have_posts()) : while($q->have_posts()) : $q->the_post();
    //Post stuff.....
endwhile;endif;
?>

不要使用查询期间。query_posts和wp_query都会影响全局变量。改用get_posts,这样您就不必担心您的查询会影响应用程序/主题的其他部分

    <?php
    $posts = get_posts(array(
        'posts_per_page' => -1,
        'post_type'=>'article_type',
        'order' => 'ASC',
        'tag__in'=>array('hot')
    ));

foreach ($posts as $post) {
setup_postdata($post);

// post stuff

}

?>

或者,如果您不想干扰$post global,可以重命名您的值。这里需要注意的是,您不能使用setup_postdata(),因此必须使用id获取值。例如:

<?php

$posts = get_posts(array(
         'posts_per_page' => -1,
         'post_type'=>'article_type',
         'order' => 'ASC',
         'tag__in'=>array('hot')
         ));

foreach ($posts as $pst) {

echo get_the_title($pst->ID);

}

    ?>


在示例2中,您也不需要重置查询。

而不是在wp\u查询中使用tag=使用post\u tag=这肯定会解决您的问题。

您可以在循环通过wp\u查询之后使用wp\u reset\u postdata(),这样全局$wp\u查询就保持不变。在您看来,它们都会影响全局$post变量。但只有query_posts会影响全局$wp_query变量,这反过来会影响大量其他内容。使用get_posts是一个完全可行的选择,但是get_posts函数本身get_posts实际上不必影响全局$post变量。如果您使用foreach($someposts as$somepost),您可以在不干扰$post的情况下访问它,缺点是除了$post之外,您无法设置\u postdata任何内容,因此无法使用\u title()等,您必须使用get\u title($somepost->ID))。当然,通过定义一个新的wp_查询,您也可以做同样的事情,但是get_post为轻型应用程序提供了更快、更干净的用法。
get_posts
只是wp_查询的包装函数。没有更快。如果说有什么区别的话,那就是性能受到了影响,但我们谈论的是一些时钟周期。请参阅的源代码以了解我所说的内容。至于清洁度,这只取决于您是否要维护面向对象或过程的编码模式。不要忘记循环后的wp_reset_postdata()。@StevenJones这是一个很好的建议,前提是页面上有多个循环。否则,重置并不是完全必要的。我总是假设已经运行了多个循环-您永远不知道某些插件(甚至核心)可能在做什么。如果您使用的是Tag Slug 1,则应该使用下面的参数。标记段塞和(阵列)-使用标记段塞。2.标记段塞(数组)-使用标记段塞。中的标记用于标记ID