プログラムでカテゴリ/用語を投稿から削除する最良の方法


8

特定のカテゴリのすべての投稿を変換して、代わりにpostmetaフラグを使用するようにスクリプトを作成しています(MySQLをテストしたところ、私のサイトと同じ大きさのサイトでは、クエリ時間を大幅に短縮できることがわかりました)。

投稿を変換するとき、カテゴリ内のすべての投稿を取得するだけの場合は、postmetaを追加してからカテゴリを削除します。これにより、カテゴリに投稿がなくなるまでその関数をリロードできます。

投稿から用語を削除するための適切な機能が見つかりません。投稿IDと用語タクソノミー+ IDを指定して、処理してもらいます。

私はまた、誰かがそれを知っている場合に変換を行うことができるプラグインにも興味があります。Scribuのプラグインで処理できる反対のものとは異なり、cat-> postmetaを実行するものは見つかりませんでした。


それをAPI経由で実行しますか、それともSQLクエリで実行しても問題ありませんか?難しくはありません。1つのクエリで新しいpostmeta値を挿入し、1つでポストカテゴリの関係を削除し、1つでカテゴリカウントを更新します。
Jan Fabry

間違いなくAPIを使いたいです。この場合、カテゴリ数などは考慮したくありません。wp_get_object_terms()/ wp_set_object_terms()を使用すると、用語の操作がかなり簡単になりますが、コアからの1つの関数によるソリューションを望んでいました。
jerclarke 2010年

回答:


6

うーん、フィッティング機能も覚えていません。

wp_set_object_terms()ような複数のラッパーで使用されるものがありwp_set_post_categories()ます。投稿のカテゴリを上書きできます。

したがって、投稿カテゴリを取得し、不要なものをチェックして、その場合は不要なものを除外して書き戻すことができます。


これはこれまでのところ最良の解決策であり、おそらく私が使用するでしょう。get_object_terms()でフェッチし、unset()不要なものを取り出し、次にwp_set_object_terms()で配列を再保存します。残念ながら、wp_set_object_term()とwp_remove_object_term()はありません。
jerclarke 2010年

これは私が過去にやった方法です。それはかなり不格好であり、改善の余地がありますが、私はそれが利用可能な最良のパターンであると信じています。
編集者
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.