LoginSignup
1
0

More than 3 years have passed since last update.

【WordPress】検索

Last updated at Posted at 2019-05-30

カスタム投稿タイプの件数指定

概要

カスタム投稿タイプの件数指定

施策

/*--------------------------------------------------------
// カスタム投稿タイプの件数指定
--------------------------------------------------------*/
function links_display_articles( $wp_query ) {
    if (!is_admin()):
        if ( $wp_query->is_main_query() && $wp_query->is_post_type_archive( 'news' ) ) {
            $wp_query->set( 'posts_per_page', 20 ); // 1ページ当たり件数
        }
    endif;
}
add_action( 'pre_get_posts', 'links_display_articles' );

検索結果にカスタム投稿タイプも含める

概要

検索結果にカスタム投稿タイプも含める

施策

/*--------------------------------------------------------
検索結果にカスタム投稿タイプも含める
--------------------------------------------------------*/
function filter_search($query) {
    if ( is_search() && !is_admin()):
        if ($query->is_search) {
            $query->set('post_type', array('post', 'page', 'news'));
        };
    endif;
    return $query;
};
add_filter('pre_get_posts', 'filter_search');

特定の記事を検索結果から除外する

概要

特定の記事を検索結果から除外する

施策

/*--------------------------------------------------------
特定の記事を検索結果から除外する
--------------------------------------------------------*/
function fb_search_filter($query){
    if ( is_search() && !is_admin()):
        if ( !$query->is_admin && $query->is_search) {
            $query->set('post__not_in', array(1328,1330,1375,1377) ); // 記事ID配列
        }
    endif;
    return $query;
}
add_filter('pre_get_posts', 'fb_search_filter');

検索結果からショートコードを削除

概要

検索結果からショートコードを削除

施策

/*--------------------------------------------------------
// 検索結果からショートコードを削除
--------------------------------------------------------*/
function remove_shortcode_from_index( $content ) {
    if ( is_search() && !is_admin()):
        $content = preg_replace('/\[[^\]]+?\]/', '', $content, -1);
    endif;
    return $content;
}

add_filter('the_title', 'remove_shortcode_from_index');
add_filter('the_excerpt', 'remove_shortcode_from_index' );

カスタムクエリー

概要

カスタムクエリー

施策

/*--------------------------------------------------------
// カスタムクエリ一
--------------------------------------------------------*/
//追加したいカスタムクエリ一覧
function query_list(){
    $arr = array(
        'shop'
    );
    return $arr;
}

//クエリとして動作するようにする
function add_meta_query_vars( $public_query_vars ) {
    foreach(query_list() as $val){
        $public_query_vars[] = $val;
    }
    return $public_query_vars;
}
add_filter( 'query_vars', 'add_meta_query_vars' );

//上記追加したクエリが存在した時の記事抽出
function meta_search_query($query) {
    if ( is_admin() || ! $query->is_main_query() ){
        return;
    }

    foreach(query_list() as $val){
        $query_val = $query->get($val);
        if($query_val){

            $query->set('meta_query',
                array(
                    array(
                        'key' => $val,
                        'value' => $query_val
                    )
                )
            );
        }
    }
}
add_action( 'pre_get_posts', 'meta_search_query');

//カスタムクエリの有無で読み込まれるテンプレートを変更する
function custom_template($template){
    global $wp_query;

    foreach(query_list() as $val){
        if($wp_query->get($val)){
            $template = dirname( __FILE__ ) . '/archive-news.php';
        }
    }
    return $template;
}
add_filter( 'home_template', 'custom_template' );
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0