価格と呼ばれるカスタムフィールド値で投稿を並べ替えようとしています。カスタムフィールド値に数字のみを使用します。私はウェブサイトの訪問者がドロップダウンを使って価格で投稿をソートできることを望みます。プラグインを探しましたが見つかりませんでした。今、あなたは以下のコードを見つけました:
<?php
$order = "&order=DESC";
if ($_POST['select'] == 'tag') { $order = "&tag=mytag"; }
if ($_POST['select'] == 'title') { $order = "&order=ASC&orderby=title"; }
if ($_POST['select'] == 'newest') { $order = "&order=DESC"; }
if ($_POST['select'] == 'oldest') { $order = "&order=ASC"; }
if ($_POST['select'] == 'mcommented') { $order = "&order=DESC&orderby=comment_count"; }
if ($_POST['select'] == 'lcommented') { $order = "&order=ASC&orderby=comment_count"; }
if ($_POST['select'] == 'prijs') { $order = "&order=ASC&orderby=meta_value_num"; }
?>
<form method="post" id="order">
Sort reviews by:
<select name="select" onchange='this.form.submit()'>
<option value="tag"<?php selected( $_POST['select'],'tag', 1 ); ?>>Tag</option>
<option value="title"<?php selected( $_POST['select'],'title', 1 ); ?>>Title</option>
<option value="newest"<?php selected( $_POST['select'],'newest', 1 ); ?>>Newest</option>
<option value="oldest"<?php selected( $_POST['select'], 'oldest', 1 ); ?>>Oldest</option>
<option value="mcommented"<?php selected( $_POST['select'],'mcommented', 1 ); ?>>Most commented</option>
<option value="lcommented"<?php selected( $_POST['select'],'lcommented' , 1 ); ?>>least commented</option>
<option value="prijs"<?php selected( $_POST['select'],'prijs' , 1 ); ?>>prijs</option>
</select>
</form>
<?php query_posts($query_string . $order); ?>
しかし、最後の選択オプション 'prijs'は機能しません。
誰かが私を手伝ってくれる?それとももっと情報が必要ですか?
それが全く正しくないならば、私の英語ですみません。
query_posts
の代わりにWP_Query
クラスを使ってみてください。 http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters
これはcodexからの例です。
$args = array(
'post_type' => 'my_custom_post_type',
'meta_key' => 'age',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'age',
'value' => array( 3, 4 ),
'compare' => 'IN',
),
),
);
$query = new WP_Query( $args );
meta_key
を追加する必要があります。そうすることで、どのメタ値を比較するのかがわかります。
https://codex.wordpress.org/Class_Reference/WP_Meta_Query
$order = "&order=ASC&meta_key=prijs&orderby=meta_value_num";