调用wp_LOCALIZE_SCRIPT中的快捷代码条带化结果

时间:2016-05-24 作者:thairish

我正在Wordpress插件上添加一些功能,点击后需要通过ajax调用一些短代码。

我第一次尝试的是在我的函数中调用ajax处理内部的短代码。php文件:

add_action( \'wp_ajax_nopriv_showads\', \'showads\' );

function showads(){

    echo do_shortcode(\'[myshortcode]\');

    wp_die();
}
在这里,我将在ajax调用的响应中移动短代码的输出。此短代码根本没有执行。

因此,在对插件中的“wp\\u localize\\u script”函数进行了一些研究之后,我将其称为shortcode:

    wp_localize_script( \'script-handle\', \'ajax_object\', 
                      array(\'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
                            \'adspace\' => do_shortcode( \'[myshortcode]\' ) 
    ));
作为对ajax的响应,我将移动短代码的输出。

目前我遇到的问题是,只要调用“wp\\u localize\\u script”函数,短代码的输出(它应该创建一个谷歌广告)就会被全部删除。

我想知道,如果我试图以错误的方式解决整个问题,是否有办法不剥离短码输出或提供建议。

2 个回复
SO网友:Benoti

尝试添加ob\\u start();和ob\\u clean();要显示ADS功能,最好不要中断输出。

function showads(){
    ob_start();
    echo do_shortcode(\'[myshortcode]\');
    $result = ob_clean();
    return $result;
    exit();
}

SO网友:Naresh Kumar P

从必须使用的函数返回时ob_start()ob_get_clean() 然后你可以独自在你需要的地方得到结果。

ob_start():

ob_start — 打开输出缓冲

此功能将打开输出缓冲。当输出缓冲处于活动状态时,不会从脚本发送任何输出(标头除外),而是将输出存储在内部缓冲区中。

输出缓冲区是可堆叠的,也就是说,当另一个ob\\u start()处于活动状态时,可以调用ob\\u start()。只需确保调用ob\\u end\\u flush()的次数适当。如果多个输出回调函数处于活动状态,则输出将按嵌套顺序依次通过每个输出回调函数进行过滤。

ob_get_clean():

ob_get_clean — 获取当前缓冲区内容并删除当前输出缓冲区

ob_get_clean() 基本上执行两个ob_get_contents()ob_end_clean().

输出缓冲区必须由启动ob_start() 具有PHP_OUTPUT_HANDLER_CLEANABLE 旗帜否则ob_get_clean() will not work.

Example:

function event_form()
{
  ob_start();
  include(\'event_form.php\');// You can include or print the short-code over here
  $output = ob_get_clean();
  return $output;
}

相关推荐

Select2 AJAX和WP查询返回全部,不筛选

所以我在这里有点困惑。我经常使用Select2/AJAX/WP\\u查询来搜索和检索默认的WP帖子类型和我自己的自定义帖子类型。在过去几年中,我构建的几乎每个站点都至少包含一个实现。但是,我目前正在一个网站上搜索自定义帖子类型的结果,它只是返回所有内容。没有发生过滤。这是一个计划工具,管理员正在为一年中的每个月制定一个计划(自定义帖子类型)。时间表的标题为“月-年”,即。\'January 2022\'.问题是,如果您搜索“一月”,例如,您将得到返回的每个存在的时间表。包括2022年2月、2021 6月等