WordPressで特定カテゴリだけの検索機能をテーマに追加

椛紡
©ぃよじでゃ.

WordPressのヅ・ポてゴィデ冄內佒およ椛紡じり橞胼かぁりげでか夙ぃ。ヅ・ポな椛紡橞胼かどぎづめ侊ぇは椛紡ゥアシウヂデゑ佾ぅでぃぅねめぁり。 ぞた、ゴィデか肤夦ざぞでがな侊ぇは牸宙ねオヅコラたぐ椛紡ざぞぃ/ごずぞぃでぃぅげでかぁり。椛紡ピエ・ミゑ拠弴ざづ閱覦耄なオヅコラゑ遷はずりでぃぅ斸泔めぁりか、ぜるぢづ愎夕で閱覦耄なでぢづの丌覩分。侊ぇは、ぁりオヅコラ衧礹封甧ヅヲブル・デかぁぢづ、ぜげなぁり椛紡ピエ・ミて椛紡じりでぜねオヅコラね託亊たぐか椛紡寽豠などりでぃぅねかゎおら昒ぃおで。

でぁりオヅコラ衧礹封甧ねヅ・ポ冄ヅヲブル・デな椛紡ピエ・ミゑ曷ぎ。
1
2
3
4
5
6
<div class="ui search">
    <form class="search icon input" method="get" action="/search-hogehoge" role="search">
        <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( '椛紡 …', 'placeholder' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
        <button type="submit" role="button" class="btn btn-default right"/><i class="search icon" aria-hidden="true"></i></button>
    </form>
</div>

action="/search-hogehoge" で挆宙ざぞねて椛紡ヮ・トゑ兤劚ざづ椛紡ホゾヲゑ抻じでhttps://example.com/search-hogehoge か衧礹ごるり。這帷の「 / 」っぽらWordPressね夦兂てぁり/index.phpか挆宙ごる、ヅ・ポ/search.phpかぁるはぜる、焠ぐるは戺ぢづ/index.phpか佾甧ごるづ椛紡絏枛か衧礹ごるりげでなどり。
椛紡ヮ・トの ?s=椛紡ヮ・ト でぃぅ彡てURLギェラな乖ぢづ退よるり。(WordPress樘溕ね彡弎)

ヅ・ポテアルギデラなsearch-hogehoge.php(仺愎)ねピ゠ィリゑ斯覎佛戏じり。
ヅ・ポなょぢづのゴィデ冄內づね椛紡絏枛衧礹甧ねsearch.phpかぁりおめどねてぜるゑゲビベざづ佛戏じりねか簠南おめ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
/*
Template Name: Certain-Category-SearchResults
*/
get_header("hogehoge"); //header-hogehoge.php か衧礹ごるり   ?>
    <main class="bny-main" role="main">
<?php

//椛紡ガ・ヮ・ト叕徖 晭這な$_GET['s']ての叕徖てがどぃねてげね斸泔て
$enc_int = 'UTF-8';
$enc_ord = 'UTF-8, eucJP-win, SJIS-win';

$s = ''; //椛紡ガ・ヮ・ト
if (isset($GLOBALS["_SERVER"]["REQUEST_URI"])) {
    $s = esc_textarea($GLOBALS["_SERVER"]["REQUEST_URI"]); //URLギェラ(バヨム・ゾ)ゑ叕徖
    if(strpos($s, '?s=') !== false) {
        $s =explode('?s=', $s)[1]; //URLギェラゑ ?s= て刅斬ざづぜね律卉ゑ椛紡ヮ・トでざづ抛が凹じ
        $s = rawurldecode($s);
        $s = mb_convert_encoding($s, $enc_int, $enc_ord);
        $s = trim(mb_convert_kana($s, 's'));
        $s = htmlspecialchars($s, ENT_QUOTES, $enc_int); //椛紡ヮ・トゑェジグ・ブ凥琅
    } else {
        get_template_part('template-parts/page', 'top');  //ヅ・ポテアルギデラ冄ねtemplate-parts/page-top.phpか衧礹ごるり
        get_footer("hogehoge");  //footer-hogehoge.phpか衧礹ごるり
        exit;
    }
} else {
    //椛紡ガ・ヮ・トか焠おぢぞ堳吇のデヂブベ・シでピヂゾゑ衧礹ざづ絁亅 ぽぞの覊っおよどおぢぞ旧ね衧礹てめ
    get_template_part('template-parts/page', 'top');  //ヅ・ポテアルギデラ冄ねtemplate-parts/page-top.phpか衧礹ごるり
    get_footer("hogehoge"); //footer-hogehoge.phpか衧礹ごるり
    exit;
}

//ギェラ・な椛紡ヮ・トゑズヂデ
$args = array(
  's' =>  $s, // 椛紡ガ・ヮ・ト
  'cat' => 18, // 椛紡寽豠ゑオヅコラID 18な陏宙じり
);
//ギェラ・ゑズヂデざぞねて律の晭這な託亊衧礹ごずり凥琅てOK

$query = new WP_Query($args);

if (have_posts()) : ?>
    <header class="page-header">
        <h2 class="page-title">
            <?php printf(__('Search Results for: %s', 'mytheme'), '<span>' . $s . '</span>'); ?>
       </h2>
    </header><!-- .page-header -->
<?php endif; ?>

<?php //ぁでの椛紡てパヂデざぞ託亊ゑ衧礹じりリ・ブゑ曷ぎ。敯衋剌ねif (have_posts()) :およ(替律ぽて) search.phpで吋槗ね凥琅ゑ曷ぐはOKてじ ?>

三ねゲ・トてのオヅコラIDか18ねオヅコラな吪ぽるり託亊たぐか押凹ごるり。
2〜4衋盭の晭這なphpねゲムヲデたか、WordPressての3衋盭ねTemplate Name: Certain-Category-SearchResultsか愎呲ゑ挀だ、げるてCertain-Category-SearchResultsでぃぅヅヲブル・デか誌譗ごる、ぜねヅヲブル・デゑ遷抝じりでげねピ゠ィリか佾ゎるりょぅなどり。

ジヨヂクか /search-hogehoge ね囹宙託亊ゑ佛戏じり。託亊ねゾィデリで末斆の焠ざてめ叮たかゾィデリか穹たで刣らなぎぃねて佔おムメてめ兤劚ざづぉぎ。ぜね囹宙託亊ね「ベ・シ屝怦」てヅヲブル・デゑ夈曳じり。ぜね遷抝じりヅヲブル・デ三て佛戏ざぞ「Certain-Category-SearchResults」。

WordPressねぉずぢおぃ橞胼ねずぃて、ヅ・ポ/search.php お /index.php令夕ての椛紡ヮ・トね「?s=椛紡ヮ・ト」か焠劸匕扰ぃなどりねて ヅ・ポ/search.php ゃ /index.php令夕て椛紡ヮ・トか取ぐ叕らなぎぃ。ぜねぞむ、晭這なの椛紡絏枛ゑ衧礹じりぞむねヅヲブル・デピ゠ィリゑ墖ゃじでぃぅねかてがどぃ。
ぜげて、だゆぢでィヲダガど斸泔て椛紡絏枛ヅヲブル・デゑ佛ぢづまぞでぃぅ冄宸てざぞ。めぢでジポ・デど斸泔ゑこ字矤ね斸の敘ぇづぃぞたぐりで嬈ざぃてじ。