如何将数组作为参数传递给WP-CLI命令?

时间:2013-06-09 作者:JP Lew

我想使用WP-CLI创建一些分配了自定义分类术语的新帖子。挑战在于wp\\U insert\\U posttax_input 参数只接受数组,我必须在命令行上指定数组。根据codex, 以下是所需的格式:

$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. 所以这个练习是为了教育目的和将来的参考。

2 个回复
SO网友:tungd

这可能是不可能的,因为WP-CLI将参数直接传递给wp_insert_posts. 我正在用wp eval. 例如:

wp eval \'wp_set_object_terms(12 , array(1, 2, 3), "course");\'
使用创建帖子时,可以获取帖子id--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");\'

SO网友:kaiser

通常,可以使用以下命令在命令行上将数组传递给脚本

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

结束

相关推荐

Implement Hooks Using Array

我试图在一个主题中实现一些钩子,但不是用重复的代码写出每个钩子,而是想知道是否可以使用和数组来声明钩子。E、 g.通常,我会使用类似以下内容:function hook_name_1() { do_action( \'hook_name_1\' ); } function hook_name_2() { do_action( \'hook_name_2\' ); } 有没有办法将钩子名称放入一个数组中,然后用一个foreach循环