首页 > 解决方案 > 具有帖子类型的 WordPress WP 查询,而不是默认值

问题描述

当我搜索时,下面显示的代码不起作用,但是如果我删除post_type以下代码,则默认帖子可以正常工作。

weblinks是分类法weblinks_guidelines的自定义帖子类型

如果搜索任何东西:

 <?php if(!empty($_POST['search'])) {
    $search_term = $_POST['search'];
 } else {
   $search_term ='';
 }

 Arguments for the query
 $args = array(
    'post_type' => 'weblinks',
    'posts_per_page' => -1,
    's'=>$search_term
);
$my_query = new WP_Query ($args);
if( $my_query->have_posts() ) :
 while ($my_query->have_posts()) : $my_query->the_post(); 

 endwhile;
endif;
?>

标签: wordpresssearchcustom-post-type

解决方案


我假设这些句子是为了我们的利益而添加的,如果不是,它们没有被正确注释掉。我还会考虑清理您的代码,不一致的缩进将在以后处理。

也就是说,你的问题是你总是在寻找一些东西,考虑到s键总是包含在$args数组中,你需要有条件地添加整个参数,而不仅仅是它的值。现在它将是“什么都不搜索”或“搜索发布的'search'值。我们可以通过使用基本语法将['s']参数推入数组来解决这个问题。$args$array['key'] = $value;

$args = array(
    'post_type' => 'weblinks',
    'posts_per_page' => -1
);

if( !empty( $_POST['search'] ) ){
    $args['s'] = $_POST['search'];
}

$my_query = new WP_Query( $args );
if( $my_query->have_posts() ) :
     while( $my_query->have_posts() ) : $my_query->the_post(); 
         // Post Loop Code Here
     endwhile;
endif;

推荐阅读