2011-06-22 23 views
1

メニュー項目を含むクエリのソート順($ current_sortに格納されています)を動的に割り当てようとしています。クエリ配列にorderby文を動的に挿入する方法

ソート順をハードコードするとうまくいきますが、ソートパラメータを文字列に動的に割り当てると失敗します。私は何が欠けていますか?

$current_sort = ", 'orderby' => 'title', 'order' => 'asc'"; 
$myposts = get_posts(
    array(
     'cat' => "$cat,-$catHidden", 
     'numberposts' => $my_current_count . $current_sort 
     )); 

//If I hard code the value of $current_sort it works fine 
$myposts = get_posts(
    array(
     'cat' => "$cat,-$catHidden", 
     'numberposts' => $my_current_count, 
     'orderby' => 'title', 
     'order' => 'asc')); 
+0

それは何でできませんの? –

+0

1つのアプローチはどのように動的で、もう一方は動的ではありませんか?あなたが ''orderby' => $ sortField'を書くことを妨げるものは何もありません。そして、 '$ currentSort'の中にあるフィールド名とソート方向を分離することは、難しいことではありません。 – Jon

答えて

1

文字列をPHPソースコードに変換することはできません。 (少なくとも、あなたすべきではない。)

このお試しください:

$ current_sort =:あなたはそれが間違ってやっている

$current_sort_order = "title"; 
$current_sort_direction = "asc"; 

$myposts = get_posts(array(
     'cat' => "$cat,-$catHidden", 
     'numberposts' => $my_current_count, 
     'orderby' => $current_sort_order, 
     'order' => $current_sort_direction 
    )   ); 
0

、あなたがこれをconcate..tryする必要はありませんが"タイトル"; $ order = "asc"; $ myposts = get_posts( 配列( '猫' => "$猫、 - $ catHidden"、 'numberposts' => $ my_current_count、 'orderbyの' => $ current_sort、 '注文' => $順 ));

0

ライン上の文字列の連結

'numberposts' => $my_current_count . $current_sort 

numberpostsソートに関する情報を含む文字列になり、最初のインスタンスで

'numberposts' => $my_current_count, 
'orderby' => 'title', 
'order' => 'asc')); 

のように、複数の配列要素を作成することと同じではありません。 2番目の例では、numberpostsには現在のカウントのみが含まれています。

より良いオプションは次のようになります。

$orderoption="<TITLE HERE>"; 
$order_dir="<SORT OPTION HERE>"; 
$myposts = get_posts(
array(
    'cat' => "$cat,-$catHidden", 
    'numberposts' => $my_current_count, 
    'orderby' => $orderoption, 
    'order' => $order_dir)); 
関連する問題