Как передать массив в качестве аргумента команде WP-CLI?

Я хочу использовать WP-CLI для создания новых сообщений с назначенными пользовательскими терминами таксономии. Проблема состоит в том, tax_input аргумент tax_input tax_input принимает только массивы, которые я должен указать в командной строке. Согласно коду , вот необходимый формат:

 $post = array( 'tax_input' => [ array( 'taxonomy_name' => array( 'term', 'term2', 'term3' ) ) ] // support for custom taxonomies } 

Но мне нужно что-то вроде этого:

 wp post create --post_type=lecture --post_title='Test Post #1' --tax-input=[BIG FAT ARRAY] 

Поэтому моя идея заключалась в том, чтобы написать скрипт PHP, который выполняет команду WP-CLI с сериализацией массива:

 //DEFINE VARIABLES $post_title = "Test Post #1"; $tax_items = array( 9,11,17 ); $tax_input = array( 'course' => $tax_items ); //SERIALIZE THIS ARRAY $tax_escaped = escapeshellarg(serialize($tax_input)); //WRITE THE COMMAND $exec_string = 'wp post create --post_type=lecture --post_status=publish --post_title="%1$s" --tax_input=%2$s --porcelain'; $exec_command = sprintf($exec_string, $post_title, $tax_escaped ); $post_id = shell_exec($exec_command); //THE OUTPUT //wp post create --post_type=lecture --post_status=publish --post_title="Test Post #1" --tax_input='a:1:{s:5:"class";a:3:{i:0;i:9;i:1;i:11;i:2;i:17;}}' --porcelain //RELATE THE NEW POST TO THE TAXONOMY TERMS wp_set_object_terms( $post_id, $tax_items,'course'); 

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

Я знаю, что эта общая стратегия работает, потому что мне удалось создать и систематизировать мои сообщения, используя wp_insert_posts . Таким образом, это упражнение предназначено для образовательных целей и в будущем.

Это, вероятно, невозможно, поскольку WP-CLI передает аргументы непосредственно wp_insert_posts . Я автоматизирую это с помощью wp eval . Например:

 wp eval 'wp_set_object_terms(12 , array(1, 2, 3), "course");' 

Идентификатор сообщения можно получить при создании сообщения с помощью --porcelain :

 wp post create ... --porcelain 

Или обычным запросом с заголовком сообщения:

 wp eval 'wp_set_object_terms(get_page_by_title("Test Post #1", OBJECT, "lecture")->ID, array(1, 2, 3), "course");' 

Обычно вы передаете массив в сценарий в командной строке, используя следующие

 # Our array is named "foo" php yourscript.php foo[]=bar&foo[]=baz&foo[some_key]=some_value