問題描述

我正在嘗試實現一個前端發佈系統,在多個下拉列表選擇字段中顯示分類數據。每個下拉列表都使用 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。