Как динамически вставить оператор orderby в массив запросов - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь динамически назначить порядок сортировки (хранится в $ current_sort ниже) для запроса, в котором перечислены элементы меню.

Однако если я жестко запрограммировал порядок сортировки, он работает нормально, когда я пытаюсьдинамически назначить параметры сортировки для строки, это не удается.Чего мне не хватает?

$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'));

Ответы [ 3 ]

1 голос
/ 22 июня 2011

Вы не можете превратить строку в исходный код PHP. (По крайней мере, вы не должны .)

Попробуйте это:

$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 голосов
/ 22 июня 2011

Конкатенация строк в строке

'numberposts' => $my_current_count . $current_sort

не эквивалентно созданию нескольких элементов массива, как в

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

В первом случае numberposts становится строкой, содержащей информацию о сортировке. Во втором случае 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));
0 голосов
/ 22 июня 2011

вы делаете это неправильно, вам не нужно констатировать .. попробуйте это:

$ current_sort = "title"; $ order = "asc"; $ myposts = get_posts ( массив ( 'cat' => "$ cat, - $ catHidden", 'numberposts' => $ my_current_count, 'orderby' => $ current_sort, 'order' => $ order ));

...