wordpress プラグインを利用しないで検索カスタマイズする方法

※コピペの際にダブルコーテンションなど大文字になるため注意してください。

1.■■■検索入力画面のソース■■■

<form id="form" action="https://ドメイン.com" method="get">
<input id="s-box" name="s" type="text" placeholder="キーワードを入力"/>
<input type="submit" value="検 索" class="button">
</form>

2.■■■functions.phpに追記(カスタムフィールドも検索条件に含むカスタマイズ)■■■
※注意    $search .= "AND post_type = 'post'"; こちらのpostのタイプ名を変更する必要があります。 現状だと投稿のみ表示となります。

function custom_search($search, $wp_query) {
global $wpdb;

if (!$wp_query->is_search)
return $search;
if (!isset($wp_query->query_vars))
return $search;

$search_words = explode(' ', isset($wp_query->query_vars['s']) ? $wp_query->query_vars['s'] : '');
if ( count($search_words) > 0 ) {
$search = '';
$search .= "AND post_type = 'post'";
foreach ( $search_words as $word ) {
if ( !empty($word) ) {
$search_word = '%' . esc_sql( $word ) . '%';
$search .= " AND (
{$wpdb->posts}.post_title LIKE '{$search_word}'
OR {$wpdb->posts}.post_content LIKE '{$search_word}'
OR {$wpdb->posts}.ID IN (
SELECT distinct post_id
FROM {$wpdb->postmeta}
WHERE meta_value LIKE '{$search_word}'
)
) ";

}
}
}
return $search;
}
add_filter('posts_search','custom_search', 10, 2);

3.■■■検索結果画面カスタマイズ(search.php)■■■

<?php query_posts($query_string . '&cat=19'); ?>  ※該当カテゴリーのみ表示 全て表示したい場合はカテゴリー指定を削除
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post();$loopcounter++; ?>
<?php if(($loopcounter) %2 ==1){ ?>

出力したい項目を記述
※こちらのサンプルは奇数と偶数で左右表示を制御

<?php if(($loopcounter) %2 ==1){ ?></div><?php } else { ?></div>
</div>
<?php } ?>
<?php endwhile; ?>

以上でプラグインを使用しないで表示が可能です。

関連記事

  1. WordPress 半角の「"」や「'」が、全角に変換されてしまい、コ…

  2. WordPressページャを利用した際に同じ投稿記事が重複する不具合に…

  3. wordpress カテゴリーページのディスクリプション設置方法につ…

  4. WordPressの常時SSL化手順について、とても便利なプラグインを…

  5. 【WordPress】固定ページの本文だけ取得してトップページに表示

  6. カスタムフィールドの値を取得して条件分岐する方法