Как подключить фильтр, чтобы поймать get_post_meta при альтернативном выводе пользовательского поля?
Я заполнил пользовательское поле (метаданные) в сообщении, вот так:
<!--:de-->Nominale spanning<!--:--><!--:zh/cn-->额定电压<!--:--><!--:en-->Arrester Accessories<!--:-->
Мне нужно перевести этот вывод, поэтому мне интересно, как подключиться к get_post_meta перед выводом метаданных.
Вот что я пробовал несколько дней, но не повезло.
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);
Ответы:
После долгих раздумий с этим, я думаю, что нашел здесь довольно хорошее решение. Я понимаю, что прошло уже больше года с тех пор, как ты спросил, но это беспокоило меня, и я не мог найти хорошего решения до сих пор.
Проблема в том, что функция get_post_metadata не позволяет вам получить доступ к текущему значению. Это означает, что вы не можете преобразовать значение, просто замените его. Мне нужно было добавить контент в мета-поле, и там, где он выводился, не было разрешено никаких фильтров.
Вот мое решение, измененное, чтобы соответствовать тому, что спрашивает этот вопрос:
Это сохранит любые другие фильтры get_post_metadata без изменений и позволит изменить исходное значение.
источник
Просто была такая же проблема, и, используя ваш код выше, вот как я решил ее:
Я попытался использовать apply_filters, get_metadata, get_post_meta непосредственно внутри функции, но они не позволили мне манипулировать полученным результатом, поэтому я прибег к использованию $ wpdb.
источник
get_post_meta()
Вот мое решение для фильтрации пост мета. Затем вызывается пользовательская функция для выполнения любых необходимых манипуляций с данными.
источник