您能理解为什么我无法在ajax帖子包含中应用短代码过滤器吗?
让我更好地解释一下:我已经设法在另一篇文章中包含一篇文章,通过admin-ajax.php, 正如著名的5 tips.
很明显,我不想显示快捷码标签,也不想去掉它们,所以我在回应do_shortcode($post->post_content)
此时,虽然我正在运行“Cleaner gallery”插件,但post gallery会被渲染,但未被过滤add_filter( \'post_gallery\', \'cleaner_gallery\', 10, 2 );
并成功地在正常(非ajax)帖子中工作。
我一直试图通过替换
$output = apply_filters(\'post_gallery\', \'\', $attr);
if ( $output != \'\' )
return $output;
使用
$output = apply_filters(\'post_gallery\', \'\', $attr);
echo \'FILTERED OUTPUT = \'.$output.\' !\';
if ( $output != \'\' )
return $output;
内部
function gallery_shortcode($attr) 位于wp包括/介质中。php。它似乎运行了两次,但在ajax包含中,第一次输出是空的,然后不进行过滤。
好吧,实际上,当再次设置时,我提到的“第二轮”回声输出也会保持为空add_filter 之前do_shortcode; 否则会显示出来(但正如我所说,未过滤)。
我也试着用
echo has_filter(\'post_gallery\');
echo current_filter();
我发现
has 始终返回
1, 虽然
current 第一次返回\'
post-gallery\' 如预期的那样,然后它会被\'
*wp_ajax_nopriv_etc*\' 钩子,它是使用管理ajax处理请求所必需的。php,但它实际上是
action 和
not A.
filter. (?!?)
我也尝试过破解cleaner gallery插件,但没有成功,为了让它直接运行短代码而不过滤默认函数,我删除了原始的短代码并添加了新的短代码。对于普通帖子来说,它很有魅力,但似乎没有办法在ajax请求中实现插件。
我越来越糊涂了。请帮帮我!
(也发布在WP.org forums)