サポート » 使い方全般 » URLのパラメーターを文字列として表示したい

  • いつもお世話になります。

    現在add_query_arg関数でURLにパラメーターを追加し、絞り込み検索の機能を
    作成している途中です。

    ここまでの手順は

    functions.phpにグローバル変数として
    $capybara = array( 'meta_key' => 'animal', 'meta_value' => 'カピバラ');
    のように変数を作成し

    <a href="<?php echo add_query_arg( array( $capybara ) ); ?>">カピバラ</a>
    と記述しadd_query_arg関数でURLにパラメーターを追加しています。

    検索結果として
    <?php if(( $_GET ["meta_value"] == "カピバラ")): ?>カピバラ<?php endif; ?>
    「meta_value=カピバラ」のようなパラメーターがあった場合は「カピバラ」という文字を
    表示するようにしています。

    ここまでは良かったのですが、
    「meta_key=animal&meta_value=カピバラ&meta_key=fruits&meta_value=リンゴ」のように
    複数のカスタムフィールドの値をパラメーターに追加した場合、先に表示した「カピバラ」を「リンゴ」という文字が上書きしてしまう形になっております。

    別々のカスタムフィールドのkeyにしておけば上書きされないと思っていたのですが、
    複数のカスタムフィールドの値を表示するにはどのようにしたら良いか困っております。

    長文になってすみませんが、どなたかご教授頂けるとありがたいです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 表示するページにもよりますが、pre_get_postsまたは、get_posts、WP Queryクラス
    を使用するほうがいいと思います。
    https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query

    複数のカスタムフィールドで絞り込みたい場合は meta_queryというキー配列で指定します。
    カスタムフィールドのパラメータ

    例えばですが
    「meta_key=animal&meta_value=カピバラ&meta_key=fruits&meta_value=リンゴ」のように
    こちらの場合をAND検索する場合であれば

    $meta_query = array(
    		'relation' => 'AND',
    		array(
    			'key'     => 'animal',
    			'value'   => 'カピバラ',
    		),
    		array(
    			'key'     => 'fruits',
    			'value'   => 'リンゴ',
    		),
    	),
    );
    $post_query = array(
    	'post_type' => 'my_post_type',
    	'meta_query' => $meta_query
    );

    こんな感じでクエリを組み立ててください。

    トピック投稿者 freedom1018

    (@freedom1018)

    jdbb様レスありがとうございます。
    さっそく教えて頂いたやりかたで試してみます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「URLのパラメーターを文字列として表示したい」には新たに返信することはできません。