问题描述
我正在尝试实现一个前端发布系统,在多个下拉列表选择字段中显示分类数据。每个下拉列表都使用 wp_dropdown_categories()
中的”name” $arg
命名。
wp_dropdown_categories( array(
'taxonomy' => 'location',
'hide_empty' => 0,
'orderby' => 'name',
'order' => 'ASC',
'name' => 'location',
) );
正如你可以看到的分类法是”location” 和选择名称也是”location” 。
然后,我添加了各种分类选择下拉列表的变量,如 post_title,post_content 等:
$title = trim( $_POST['wpuf_post_title'] );
$content = trim( $_POST['wpuf_post_content'] );
$tags = wpuf_clean_tags( $_POST['wpuf_post_tags'] );
$customcategory = trim( $_POST['customcategory'] );
$cat = trim( $_POST['cat'] );
$location = trim( $_POST['location'] );
$sale_rental = trim( $_POST['sale_rental'] );
$price = trim( $_POST['price'] );
最后,我将额外的信息添加到一个数组中,准备由 wp_insert_post()
发送。我非常坚持是否通过将 tax_input
添加到下面的数组中来做正确的事情,这是我从 codex 中了解的,我需要做的。
'tax-input' => array(
$location,
$sale_rental,
$price
),
所以最终看起来像这样:
$my_post = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => $post_status,
'post_author' => $userdata->ID,
'post_category' => array( $_POST['cat'] ),
'post_type' => $customcategory,
'tags_input' => $tags,
'tax_input' => array(
$location,
$sale_rental,
$price
),
);
$post_id = wp_insert_post( $my_post );
但是,当我提交新的帖子时,所有标准的帖子数据 (以及我的自定义帖子类型) 都可以使用,但分类不会。我显然做错了什么?
最佳解决方案
在您拥有每个分类标准后,请使用 wp_set_object_terms
:
...
$post_id = wp_insert_post( $my_post );
wp_set_object_terms( $post_id, $location, 'location' );
wp_set_object_terms( $post_id, $sale_rental, 'sale_rental' );
wp_set_object_terms( $post_id, $price, 'price' );
次佳解决方案
您可以使用 wp_insert_post 进行操作,但您必须在 tax_input
中指定分类法,因此应该如下所示:
$item['tax_input'] = array (
'location' => implode( ',', $location ),
'sale_rental' => implode( ',', $sale_rental ),
'price' => implode( ',', $price ),
)
我使用 implode()
,使得 $location
可以是具有多个术语的数组。
另外,请注意,这仅适用于 non-hierarchical 分类法。对于分层分类法,您必须提供一个数组而不是一个字符串。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。