web-dev-qa-db-ja.com

チェックボックスを使用してカスタム分類用語で投稿を表示する方法

チェックボックス付きのフォームが欲しいのですが。各チェックボックスは、私の分類法「都市」の用語です。ユーザーがチェックボックスのいずれかを選択すると、マークされた用語で_でないであるすべての投稿を表示するはずです。

私はこのコードを持っていたならば:

$args['tax_query'] = array(
    array(
        'taxonomy' => 'cities',
        'terms' => array('Boston', 'Chicago'),
        'field' => 'slug',
        'operator' => 'NOT IN',
    ),
);
query_posts($args);

チェックボックスの値を用語の配列に渡すにはどうすればよいですか。私は言い換えると、

'terms' => array('Boston', 'Chicago'),

に:

'terms' => array(VALUE CHECKBOX 1, VALUE CHECKBOX 2),

ありがとう。

1
Mike

特定の分類用語を除外したtax_queryパラメータを使用してクエリを実行できます。この答えを参照してください。

クエリを実行するwhereについては、そのページが表示されているページに送信するフォームを使用するか、そのページに対して呼び出される適切なテンプレートファイルを見つける必要があります。その後、ページが更新されたら、フォーム入力を処理し、クエリを実行して結果を表示します。

あるいは、サーバー側でクエリを実行してAJAX経由で呼び出すこともできます。その詳細については、ここから始めることができます(これはプラグインについて説明していますが、実際にプラグインを作成する必要はありません。常に_を付けることができます)PHPをテーマディレクトリ内のfunctions.phpにコード化するか、WordPressでAJAXを実装するためのチュートリアルを探してください。

編集:あなたのコメント通り、これはページのチェックボックスから値を取得するためのコードです。これはテストされていません。ガイドとしてのみ意図されています。フォームが自分自身に送信することに注意してください。ページのURLをフォームのactionパラメータに入れることでそれを達成します。

<?php
$cb_city = '';
if(isset($_POST['city']) && $_POST['city'] != '') { // if form was submitted we can get value
    $cb_city = $_POST['city'];
}
?>
<form action="<?php echo get_permalink(); ?>" method="POST">
    <label>Your label
        <?php
            $checked = "";
            if( !empty($cb_city) ){ // pre-populate checkboxif it was checked on form submit
                $checked = "checked";
            }
        ?>
        <input <?= $checked; ?> type="checkbox" name="city" id="city" value="1"/>
    </label>
    <button type="submit" class="btn-submit">Submit</button>
</form>
0
montrealist