Help us understand the problem. What is going on with this article?

【WordPress】検索

More than 1 year has passed since last update.

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

概要

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

施策

/*--------------------------------------------------------
// カスタム投稿タイプの件数指定
--------------------------------------------------------*/
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' );
hiron712
備忘録です。 間違っていたり、 どこかの引用もあります。 すみません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away