0

以下のコードを使用して、ワードプレスでカスタムカテゴリ検索を使用しました。

<?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 に答える