0

ここに画像の説明を入力してください


上の画像に示すように、WordPress検索フォームのデフォルトのテキストボックスを4つのコンボボックスに置き換えたいと思います。コンボボックスで選択した値に基づいて、ユーザーが投稿を検索できるようにする必要があります。

各コンボボックスは、カスタムフィールドの値を取得します。たとえば、プロパティタイプは、property_typeカスタムフィールドの値をチェックすることになっています。

私の頭痛の種は、フォームを上の画像のように見せるための方法と、これらの基準の組み合わせを使用して投稿を適切にクエリする方法です。例:プロパティタイプの検索:Townhouseは、property_typeカスタムフィールドに「Townhouse」が含まれるすべての投稿を表示する必要があります。

私はこれについて私が得ることができるどんな助けでも本当に感謝します。

ありがとう。

4

1 に答える 1

1

これを行うには、カスタムクエリを作成し、結合されたコンボボックスからクエリ文字列を取得する必要があります。

このクエリは、検索語の順序にも依存します。

たとえば、「プロパティタイプ」はカテゴリですか?タグ?分類学?カスタムフィールド??

これは単純な答えよりも少し複雑です。

たとえば、検索用語に「カテゴリ」を含める場合(「プロパティタイプ」がカテゴリであると想定して、次のように実行できます。

<form role="search" method="get" id="searchform" action="<?php bloginfo('siteurl'); ?>">
  <div>
    <label class="screen-reader-text" for="s">Search for:</label>
    <input type="text" value="" name="s" id="s" />
    in <?php wp_dropdown_categories( 'show_option_all=All Categories' ); ?>
    <input type="submit" id="searchsubmit" value="Search" />
  </div>
</form>

または関数として:

function wp_combo_search_form($form) {
$form = '<form method="get" id="searchform" action="' . get_option('home') . '/" >
<div><label class="hidden" for="s">' . __('Search for:') . '</label>
<input type="text" value="' . attribute_escape(apply_filters('the_search_query', get_search_query())) . '" name="s" id="s" />
<input type="submit" id="searchsubmit" value="'.attribute_escape(__('Search')).'" />
<br />
'.wp_dropdown_categories('show_option_all=All Categories&hide_empty=0&echo=0&selected='.intval($_GET['cat']).'').'
</div>
</form>';
return $form;
}

//uncomment following line for automatic filtering your theme
//add_filter('get_search_form', 'wp_combo_search_form'); 

使用法 :

<?php echo wp_combo_search_form(''); ?>

しかし、正直なところ、質問の種類とその「スタイル」から判断すると、それを行うためのプラグインを検索することをお勧めします。検索

編集私 はそうするための多くの方法とアプローチがまだあります(jQuery、Json、直接クエリ..)が:

カスタムフィールドが必要だと言ったので-

wp3.1以降、meta_queryをquery_postsに追加できます。

<?php
$args = array(
    'post_type' => 'your_post_type', //typically "post"
    'meta_query' =>
        array(
            'key' => 'your_key',
            'value' => 'your_value',
            'compare' => 'NOT LIKE' //just an example
        ),
        array(
            'key' => 'your_key_2"',
            'value' => array( 20, 100 ), //value can be array
            'type' => 'numeric', //just an example
            'compare' => 'BETWEEN' //just an example
        )
)
query_posts( $args );
?>

まず、次のようにsearch.phpで変数をキャプチャします$_GET['field name'];

$p_type = $_GET['property_type'];
$p_city = $_GET['property_city'];
$n_bedrooms = $_GET['no_bedrooms'];
$n_bathrooms = $_GET['no_batrhooms'];

次に、それをクエリ配列に渡します

$args = array(
    'meta_query' => array(
        'relation' => 'AND',
array(
            'key' => $p_type,
 'value' => $whatever,

        ),
        array(
            'key' => $p_city,
 'value' => $whatever,

        )
    ) // etc.etc...
 ); 

これで、ドロップダウンに適切な値を入力するだけで済みます。

ここで例を見ることができます(検索フィールド-ドロップダウンではありません-しかしそれは同じです):

http://dev.matthewaprice.com/

ここでそれがどのように行われるかを読んでください:

http://matthewaprice.com/search-multiple-custom-fields-in-wordpress/

こちらもお読みください:http ://www.wp1stop.com/wordpress-101-guide-search-multiple-custom-fields-in-wordpress-custom-field-search-custom-query-part-1/

于 2012-06-13T05:51:42.540 に答える