添付ファイルのカスタム分類法を作成しました。すべて問題ありませんが、今度はデフォルトのwordpress media admin( 'upload.php')の一括操作を使用して、添付ファイルにその用語を一括して割り当てることができるようにしたいです。
ここにwpseで私は管理メディアテーブルの一括操作に関する質問/回答をいくつか見つけました。
これらは、選択メニューに一括操作を追加する方法についての指示を与えてくれます(フィルタはないので、私はjavascriptを使用する必要があります)が、私の場合は異なります。
一括アクションが選択されたときにリンクされた質問/回答では、ページフォームがすぐに送信されます。代わりに、一括アクションを選択して(例: "Assign Terms")標準投稿で一括[編集]アクションを選択したときに表示されるUIと非常によく似たUIを表示したい(下の画像を参照)。
ここで用語を選択し、最後に「更新ボタン」をクリックして添付ファイルに用語を一括割り当てします。
どうすればこれを達成できますか?
質問で述べたように、標準の選択メニューに一括アクションを追加するためのフィルタはありません。それより良いものはありますが、追加アクションではなく削除アクションにのみ使用できます。だから、たとえphp/wp開発者にとって(私のように)それが醜い(そしておそらくは醜い)ようであってもたぶんチャンスはjsを使うことです。
悪い知らせは、質問の中の要求を達成するために、私たちもたくさんのJavaScriptを必要とすることです。
代替案はありません。フィルタやアクションがない場合、またはJavaScriptを使用する場合、またはコアファイルを変更する場合です。 2つの悪の間で、小さい方を選びましょう。
ワークフロー
prevent_default()
を呼び出し、ajaxリクエストでその時点でcreate関数を呼び出す1.結果として与えられたHTMLをテーブルの適切な場所に配置します。$_POST
から添付ファイルIDの配列と用語の配列(すべての分類法の配列)を受け取る関数を作成し、指定された添付ファイルに用語を割り当てるだけです。jQuery.on()
を使用することを忘れないでください)。それは、ポイント5で作成された関数を呼び出し、完了したら、ページをupload.phpにリダイレクトして、管理メッセージを使用して成功またはエラーメッセージを表示するのに役立つクエリ変数を追加します。Ajaxリクエストを処理する関数は、nonceのチェックや現在のユーザーが必要なアクションを実行できるかどうかなどのセキュリティチェックを行う必要があることに注意する必要があります。
以下は、一括用語割り当てのためのUIの外観のプレビューです。
階層型と非階層型の分類法の実装が異なること、および非階層型の分類法の実装が提案されていることに注意してください。
誰かが興味を持っているなら、私はここで言われていることをするプラグインを作成しました、そしてもう少し、実際にはプラグインは2に別れています:
誰かが2番目の部分を使用したいが最初の部分は使用したくない場合(すでに必要な分類法がすべて登録されているため)、登録をブロックするためにフィルターが与えられます。
デフォルトの分類法をプラグインに登録させたいがデフォルトの引数が気に入らない場合は、デフォルトの引数を変更するために別のフィルタが提供されます。
ボーナス機能として、3つ目のフィルタを使用すると、他の添付ファイル分類を登録するためにプラグインを使用することができます。プラグインには添付ファイル分類を考慮して設定されたデフォルト引数が多数あり、逆にregister_taxonomyのデフォルト引数があります。ポスト分類法を念頭に置いて設定されています。
プラグインは、ローカライズを容易にするために独自のテキストドメインも実装しています。
プラグインコードは GitHub にあります