将‘the_content’筛选器应用于主题定制实时预览

时间:2014-01-31 作者:David Gard

我正在使用\'transport\' => \'postMessage\' 在主题定制实时预览期间更新页脚区域内的文本。

我的问题是,在我的网站上,相应的主题设置(footer_text) 有the_content 应用于它的过滤器。有没有办法通过JS应用该过滤器,或者\'transport\' => \'refresh\' 在这种情况下?谢谢

(function($){

    /** Update the footer text */
    wp.customize(\'footer_text\', function(value){
        value.bind(function(newval){
            $(\'#footer-left\').html(newval);
        });
    });

})(jQuery);

1 个回复
最合适的回答,由SO网友:David Gard 整理而成

我再次关注这一点,所以我决定发布一个答案,因为我实际上使用了AJAX调用。

正如在对我的问题的评论中所指出的@Otto -

postMessage的意义在于它直接在浏览器中发送数据。它不通过服务器,所以不,除非它使用刷新,否则不能对其应用PHP过滤器。“”

因此,使用上面的原始示例作为上下文,您可以对通过postMessage 方法使用AJAX调用,如下所示-

JS在您的theme-customiser.js 文件-

(function($){

    /** Update the footer text */
    wp.customize(\'footer_text\', function(value){
        value.bind(function(newval){

            var data = {
                action: \'filter_using_the_content\',
                text:   newval
            }

            $.post(MyAjax.ajaxurl, data, function(response){
                $(\'#footer-left\').html(response);
            });

        });
    });

})(jQuery);
PHP在您的functions.php 文件-

add_action(\'wp_ajax_filter_using_the_content\', \'my_filter_using_the_content\');
function my_filter_using_the_content(){

    echo apply_filters(\'the_content\', $_POST[\'text\']);
    die();  // Required for a proper result

}

结束

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。