これは私が認めている奇妙な状況です。
I'm using Channel Forms to make all entries on my site created & editable via the front-end.
私は場所のカテゴリグループを持っています。
プライマリカテゴリを使用して、ユーザーがプライマリロケーションを指定できるようにします。一部の有料プレミアムエントリは、追加のカテゴリ(場所)に割り当てることもできます。
CPでは、カテゴリをプライマリカテゴリとして指定すると、以前に選択されていなくても自動的にそのカテゴリが選択されます。このバーハビールは、チャンネル形式に引き継がれません。フロントエンドフォームからプライマリカテゴリを選択した場合、そのカテゴリは実際には選択されません。プライマリカテゴリIDを隠しカテゴリ[]フィールドにコピーして、カテゴリが選択されていることを確認するために、フォーム送信時にjavascriptを使用します。これは、新しいエントリ作成時にうまく動作します。
チャンネルフォームを介した入力編集で問題が発生します。
今、Primary Cateogryを編集する場合、同じJavaScriptを使用して、そのCat IDを隠しフィールドの値として割り当てることができます。ただし、元のPrimary Categoryの選択を解除するにはどうすればよいですか?プライマリカテゴリが変更されたときに古いカテゴリの選択を解除すると、プライマリカテゴリを編集し続ける場合、作成者は多くの場所にエントリを追加できます。
つまり、本質的には、次のような値を持つ隠しフォームフィールドが必要です。
<input type="hidden" name="category[]" value="not {some-cat-id}" />
新しいフォームが選択されたときに、元のカテゴリを選択解除するために、チャンネルフォーム(編集入力)を使用する別の創造的な解決策。