php - wp_update_post () 在未登录或从命令行时不接受 tax_input
问题描述
为 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设置用户为我解决了这个问题。
推荐阅读
- python-3.x - 错误:需要 Microsoft Visual C++ 14.0。使用“Microsoft Visual C++ 构建工具”获取它
- javascript - 为什么我的函数在第二次单击时不加载新的类名?
- kubernetes - kubernetes 1.18 堆叠控制平面和 etcd 节点无法添加第二个 ETCD 节点
- sql - 使用 SELECT 结果作为父 SELECT 的列名
- python - 是否可以将 python 项目的日志信息保存在局部变量中?
- ruby-on-rails - How to force Puma start in single mode on Rails?
- r - 如何将向量添加到 R 中的 NMDS?
- amazon-web-services - 具有代码管道和代码构建的 AWS Ci/Cd 管道
- php - 如何在 jQuery/Ajax 中将多个 PHP 变量传递给 PHP?这是我所有的代码
- java - 我怎样才能安全地向上转换一个 Optional?