为WordPress编写导入脚本,当登录到同一个WordPress网站时,导入可以从浏览器窗口正确运行。但是,从命令行(或从icognito窗口(执行脚本只能部分工作。它除了更新";cheatsheetcat";分类学
我怀疑这与";"公共";旗帜,但我不完全理解。
分类设置如下:
function pios_add_cheatsheet_taxonomy()
{
$labels = array(
'name' => 'Cheat Sheet Categories',
'singular_name' => 'Cheat Sheet Category',
'search_items' => 'Search Cheat Sheet Category',
'all_items' => 'All Cheat Sheet Categories',
'parent_item' => 'Parent Cheat Sheet Category',
'parent_item_colon' => 'Parent Cheat Sheet Category:',
'edit_item' => 'Edit Cheat Sheet Category',
'update_item' => 'Update Cheat Sheet Category',
'add_new_item' => 'Add New Cheat Sheet Category',
'new_item_name' => 'New Cheat Sheet Category',
'menu_name' => 'Cheat Sheet Category',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'query_var' => true,
'rewrite' => true,
'public' => true,
'show_admin_column' => true,
);
register_taxonomy('cheatsheetcat', 'attachment', $args);
//Add the parent categories
$ar_parent_categories = array("Item category", "Industry", "Family", "BeerWine");
foreach ($ar_parent_categories as $category) {
$item_term = term_exists($category, 'cheatsheetcat', 0);
// Create state if it doesn't exist
if (!$item_term) {
$item_term = wp_insert_term($category, 'cheatsheetcat', array('parent' => 0));
}
}
}
add_action('init', 'pios_add_cheatsheet_taxonomy');
导入脚本中我认为失败的部分是:
$custom_tax = array(
'cheatsheetcat' => $arTaxCheetSheet
);
//Update the attachment / post
$attachment = [
'ID' => $id,
'post_title' => $filename,
'post_content' => $content,
'post_excerpt' => $excerpt,
'tax_input' => $custom_tax,
];
$post_id = wp_update_post ($attachment, true);
if (is_wp_error($post_id)) {
$errors = $post_id->get_error_messages();
foreach ($errors as $error) {
echo $error;
}
}
此时的$arTaxCheetSheet是正确的,已将其打印到屏幕上。但是WordPress还有一些更深层次的东西我很怀念。
任何真知灼见都会令人惊叹。
在脚本开始时用wp_set_current_user设置用户为我解决了这个问题。