Bagaimana cara mengaitkan filter untuk menangkap get_post_meta saat mengganti keluaran bidang khusus?
Saya telah mengisi bidang khusus (meta data) dalam sebuah pos, seperti ini:
<!--:de-->Nominale spanning<!--:--><!--:zh/cn-->额定电压<!--:--><!--:en-->Arrester Accessories<!--:-->
Saya perlu menerjemahkan output ini, jadi saya bertanya-tanya bagaimana cara menghubungkan ke "get_post_meta" sebelum meta data output.
Inilah yang saya coba selama beberapa hari, tetapi tidak berhasil.
function getqtlangcustomfieldvalue($metadata, $object_id, $meta_key, $single){
$fieldtitle="fields_titles";
if($meta_key==$fieldtitle&& isset($meta_key)){
//here is the catch, but no value has been passed
}
}
//Specify 4 arguments for this filter in the last parameter.
add_filter('get_post_metadata', 'getqtlangcustomfieldvalue', 10, 4);
Jawaban:
Setelah banyak bermain-main dengan ini, saya pikir saya menemukan solusi yang cukup bagus di sini. Saya menyadari ini lebih dari setahun setelah Anda bertanya tetapi ini mengganggu saya dan saya tidak bisa menemukan solusi yang baik sampai sekarang.
Masalahnya adalah bahwa fungsi get_post_metadata tidak memungkinkan Anda untuk mengakses nilai saat ini. Ini berarti Anda tidak dapat mengubah nilai, cukup ganti saja. Saya perlu menambahkan konten ke bidang meta dan di mana hasilnya tidak memungkinkan filter apa pun.
Inilah solusi saya, diubah agar sesuai dengan pertanyaan ini:
Ini akan menjaga filter get_post_metadata lainnya tetap utuh dan memungkinkan modifikasi nilai asli.
sumber
Baru saja mengalami masalah yang sama dan, menggunakan kode Anda di atas, berikut adalah cara saya menyelesaikannya:
Saya mencoba menggunakan apply_filters, get_metadata, get_post_meta langsung dalam fungsi tetapi mereka tidak mengizinkan saya untuk memanipulasi hasil yang dihasilkan, jadi saya menggunakan $ wpdb.
sumber
get_post_meta()
Inilah solusi saya untuk memfilter meta pos. Ini kemudian memanggil fungsi kustom untuk melakukan manipulasi data yang diperlukan.
sumber