我想使用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
. 所以这个练习是为了教育目的和将来的参考。
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");\'