web-dev-qa-db-ja.com

Wp_terms_checklistで生成されたアイテムをフロントエンドで更新/保存する

フロントエンドページにカスタム投稿タイプのカスタム分類のリストを表示しています。このページには、ユーザーが以前にチェック済みとして選択したアイテムがすべて表示されています。

正しく表示されていますが、新しい/変更された選択を保存する方法をうまく処理できません。

これは私が用語を表示するために使っているコードです:

$args = array(
    'descendants_and_self'  => 0,
    'selected_cats'         => false,
    'popular_cats'          => false,
    'walker'                => null,
    'taxonomy'              => 'genres',
    'checked_ontop'         => false
); 

wp_terms_checklist( $my_postid, $args ); 

このページの出力は次のとおりです。

<li id='genres-28'><label class="selectit"><input value="28" type="checkbox" name="tax_input[genres][]" id="in-genres-28" checked='checked' /> 2 Step</label></li>

<li id='genres-14'><label class="selectit"><input value="14" type="checkbox" name="tax_input[genres][]" id="in-genres-14" checked='checked' /> Afro House</label></li>

<li id='genres-7'><label class="selectit"><input value="7" type="checkbox" name="tax_input[genres][]" id="in-genres-7" checked='checked' /> Bassline</label></li>

etc...

このように投稿データを設定します。

$post_to_edit = array(
    'ID'           => $my_postid,
    'post_content' => $_POST['editor'],
    'tax_input'    =>  array( 'genres' => array($_POST['tax_input[genres]']) )
);

$pid = wp_update_post($post_to_edit);

それから私はこのような用語を更新しようとしています:

wp_set_post_terms($pid,(array)$_POST['tax_input[genres]'],'genres', true);

そして私も試してみました:

wp_set_object_terms($pid,(array)($_POST['tax_input[genres]']),'genres');

しかし、どちらもうまくいきませんか?

私は正しい名前属性を選択していないと思いますが、過去24時間考えていたことをすべて試してみましたが、データベースに保存するための条件を取得できません。

wp_terms_checklistから出力された値を保存/更新する方法を誰かが知っていますか?

1
Grant

$_POST['tax_input[genres]']$_POST['tax_input']['genres']であるべきです

0
webtoure