Я сохраняю почтовый контент в метатете post, и я бы хотел получить его вместо исходного содержимого, так что когда я вызываю the_content (), данные в метатете сообщений отображаются не как фактические данные.
function test(){ $post_meta = post meta data here .... echo apply_filters('the_content', '$post_meta'); } add_filter('the_content', 'test');
Я получаю эту ошибку
Fatal error: Maximum function nesting level of '100' reached
Ошибка имеет смысл, но как я могу достичь того, что я пытаюсь сделать, любые идеи?
ОБНОВЛЕНИЕ: после того, как я сильно ударился головой о стену, вот лучший способ, с помощью которого я могу зацепиться за контент и использовать его фильтр из пользовательского обратного вызова, не попадая в бесконечный цикл.
Ответ был на удивление прост, и я чувствую себя глупо, не думая об этом раньше:
function test($content) { remove_action('the_content', 'test'); //DISABLE THE CUSTOM ACTION $post_meta = post meta data here .... $cleaned_meta = apply_filters('the_content', $post_meta); add_action('the_content', 'test'); //REENABLE FROM WITHIN return $cleaned_meta; } add_action('the_content', 'test');
Я уверен, что вы нашли еще одно решение, но все же я надеюсь, что это поможет с любыми проблемами, которые могут возникнуть в будущем.
Я думаю, что вы хотите добавить свой фильтр до того, как будет the_content()
. Вы, вероятно, хотите что-то подобное.
function modify_content() { global $post; $post_meta = 'testing'; $post->post_content = $post_meta; } add_action('wp_head', 'modify_content');
Это позволит вам изменять содержимое сообщения и все еще запускать его через фильтры на the_content()
. Хотя это будет работать только для отдельных сообщений / страниц. Вам нужно будет найти еще один крючок, если вы захотите также изменить страницы архива.