Cara terbaik untuk menghapus kategori / istilah secara terprogram dari sebuah pos

8

Saya sedang mengerjakan skrip untuk mengonversi semua posting dalam kategori yang diberikan untuk menggunakan flag postmeta sebagai gantinya (pengujian MySQL telah menunjukkan kepada saya bahwa di situs sebesar milik saya ini akan menyebabkan penurunan yang berarti dalam waktu permintaan).

Saat mengonversi posting saya hanya ingin mengambil semua posting dalam kategori, tambahkan postmeta kemudian hapus kategori, yang akan membiarkan saya memuat kembali fungsi itu sampai tidak ada lagi posting dalam kategori.

Saya tidak dapat menemukan fungsi yang baik untuk menghapus istilah dari pos. Saya ingin memberikannya postingan id dan istilah taksonomi + ID dan mengaturnya untuk saya.

Saya juga tertarik dengan plugin yang dapat melakukan konversi untuk saya jika ada yang tahu. Saya tidak dapat menemukan yang melakukan cat-> postmeta, tidak seperti yang sebaliknya yang dapat ditangani oleh plugin Scribu.

jerclarke
sumber
Apakah Anda ingin melakukannya melalui API, atau apakah boleh melakukan ini dengan pertanyaan SQL? Tidak akan terlalu sulit, hanya satu permintaan untuk memasukkan nilai postmeta baru, satu untuk menghapus hubungan post-kategori, dan mungkin satu untuk memperbarui jumlah kategori.
Jan Fabry
Saya pasti ingin menggunakan API. Jumlah kategori, dll. Bukan sesuatu yang ingin saya pertanggungjawabkan dalam kasus ini. The wp_get_object_terms () / wp_set_object_terms () sudah akan membuatnya cukup mudah untuk memanipulasi istilah, tapi saya berharap untuk solusi satu fungsi dari core.
jerclarke

Jawaban:

6

Hmmm, tidak bisa mengingat atau menemukan fungsi pemasangan juga.

Ada wp_set_object_terms()yang digunakan di beberapa bungkus seperti wp_set_post_categories(). Itu dapat menimpa kategori untuk sebuah posting.

Jadi Anda bisa mendapatkan kategori posting, periksa yang tidak diinginkan dan tulis kembali tidak termasuk yang tidak diinginkan dalam kasus itu.

Jarang
sumber
Ini adalah solusi terbaik sejauh ini, dan yang mungkin akan saya gunakan. get_object_terms () untuk mengambil, menghapus () yang saya tidak inginkan, kemudian wp_set_object_terms () untuk menyimpan kembali array. Sayang sekali tidak ada wp_set_object_term () dan wp_remove_object_term ().
jerclarke
Beginilah cara saya melakukannya di masa lalu. Ini cukup kikuk dan marak untuk perbaikan, tapi saya percaya itu menjadi pola yang terbaik.
Editor