Проблема в том, что процессы, связанные с трубой, выполняются в подоболочках (и, следовательно, имеют собственную среду). Все, что происходит внутри while
, не влияет на что-либо вне трубы.
Ваш конкретный пример можно решить, переписав канал на
while ... do ... done <<< "$OUTPUT"
или, возможно,
while ... do ... done < <(echo "$OUTPUT")
publication_year
не является столбцом в таблице wp_posts
. См. Описание базы данных WordPress . Если параметр orderby
недопустим, WordPress вернется к сортировке по умолчанию, которой является столбец post_date
.
Если это мета-значение, вы должны использовать:
$args = array(
'post_type' => 'publication',
'post_status' => 'publish',
'category_name' => 'my-category',
'posts_per_page' => 20,
'orderby' => 'meta_value_num',
'meta_key' => 'publication_year',
'order' => 'DESC',
'paged' => $paged
);
См. Кодекс WordPress для дополнительной информации.