0

我使用下面的代码在 wordpress 中使用了自定义类别搜索。

<?php

function mySearchFilter($query) {

    if (isset($_GET['post_type']) && $_GET['post_type'] == 'demotheme') { 
   $post_type = "dtheme";
    }
    if ($query->is_search) {        

            $query->set('post_type', $post_type);
    };

    return $query;
};

add_filter('pre_get_posts','mySearchFilter');
?>

在上面$query->set('post_type', $post_type);已经返回了一组结果。在这里我需要检查它是否返回空结果,我需要放置,

$query->set('post_type', "dplugins");

我怎样才能做到这一点?

4

3 回答 3

1

如果结果集是一个数组,您可以简单地使用此代码

$res = $query->set('post_type', $post_type);

if ($res)
    // add your code here!

还有一些很好的函数可以检查返回值“is_null()”、“isset()”、“is_array()”。

于 2012-05-05T06:46:45.290 回答
0

我扩展了 MJ.Ahmadi 的答案并将其插入到您的代码中。

    if (isset($_GET['post_type']) && $_GET['post_type'] == 'demotheme') { 
        $post_type = "dtheme";
    }
    if ($query->is_search) {
        $result = $query->set('post_type', $post_type);
    };
    if($result){
        return $query;
    } else{
        $result = $query->set('post_type', "dplugins");
        if($result){
            return $query;
        }
    }
};

add_filter('pre_get_posts','mySearchFilter');
?>
于 2012-05-05T06:58:07.013 回答
0

谢谢你的回答,

我两者都用下面一个,效果很好。

<?php

function mySearchFilter($query) {    
    if ($query->is_search) {        
        $query->set('post_type', array('post','page','attachment','dtheme','dplugins'));
    };
    return $query;
}

add_filter('pre_get_posts','mySearchFilter');
?>
于 2012-05-05T11:19:22.410 回答