应用过滤器、嵌入和AJAX不是朋友吗?

时间:2012-07-09 作者:user16962

我遇到了一个问题。。。

存在包含YouTube链接的内容

Lorem ipsum bla bla bla blahttp://www.youtube.com/watch?v=nTDNLUzjkpg

我的插件在视图中显示此内容和该代码:

<?php echo apply_filters( \'the_content\', $data[\'meta\']->start_page_content ); ?>
问题是,如果您通过浏览器使用常见的GET方法打开页面,链接将成为YouTube播放器,但当我通过AJAX加载相同的模板时,apply\\u过滤器似乎不起作用,在输出时,我只得到一个链接,而不是YouTube播放器代码。

我怎样才能修复它?

2 个回复
SO网友:kaiser

由于您还没有发布,您使用AJAX到底在做什么,我们只能猜测一下。我想,您的做法是大错特错的——不需要在ajax中进行“挂钩/过滤”。

AJAX用于管理(?)

基本上,AJAX的东西就是管理的东西。这意味着你有wp_ajax_ 挂钩和awp_ajax_nopriv_ 胡克,但是is_admin() 对于所有请求,仍将返回true。这是遗留下来的东西,或者只是传统。

如果你想通过AJAX添加一些东西,而不仅仅是用javascript。

使用wp_localize_script() 要从PHP»javascript传输数据,请首先本地化元数据,使其在脚本中可用:

wp_enqueue_script( \'my-script-handle\', etc.... );
wp_localize_script(
     \'my-script-handle\'
    ,\'my_localized_data\'
    ,array(
        \'youtubevideo\' => $data[\'meta\']->start_page_content
     )
);
简单jQuery可以完成所有操作,然后将其添加到容器中,或者添加到需要的任何位置:

// Depending on what exactly your "video" is (embed/link/etc.), you need to adjust the var.
var youtube_video = my_localized_data.youtubevideo;
jQuery( \'#content\' ).append( youtube_video );

SO网友:nderambure

由于缺少$post->ID(作为全局),因此未处理oEmbed。您只需在功能中执行以下操作:

global $post; $post->ID = PHP_INT_MAX;

...然后是apply\\u筛选器(\'内容\'…)就好像这不是一个Ajax调用一样。

结束

相关推荐

在自定义查询块上添加AJAX“Load More”

我有一个index,php 具有各种new WP_Query 一切正常,但在这个模块中,我需要实现“人们喜欢的AJAX东西-加载更多帖子”: <h2>Latests articles <?php bp_site_name(); ?></h2> <?php $destaque = get_term_by(\'slug\', \'destaque\', \'post_tag\'); $video = get_te