是否与JSON API共享模板?

时间:2012-01-17 作者:djb

有没有办法在JS和Wordpress之间共享“模板”?

例如,这种朴素的座椅模板感觉还可以:

var AJAXSuccessFunc = function(data){ // calling this on ajax.success 
    var title = data.page.title;
    var content = data.page.content;
    var string = \'<h1>\' + title + \'</h1>\' + content;
    targetDiv.html(string).fadeIn(); 
}
但考虑到内容可能以这种方式出现,或者通过传统的WordPress PHP模板出现,我可能需要为JS和PHP维护两个基本相同的模板,这有点令人担忧。尤其是当存在多个HTML标记时。

我想把一切都标准化和集中化!我的选择是什么?

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

您可以使用wp_localize_script();:

// Example:
wp_register_script( \'your-template-script\', $path, $dependencies, $version, true );
wp_enqueue_script( \'your-template-script\' );
wp_localize_script( 
     \'your-template-script\' 
    ,\'your_template_object\'
    ,array( 
         \'ajaxurl\'          => admin_url( \'admin-ajax.php\' )
        ,\'template_nonce\'   => wp_create_nonce( self :: $search_nonce_val ) 
        ,\'action\'           => \'build_template\'
        ,\'title\'            => get_the_title()
        ,\'content\'          => get_the_content()
        ,\'title_format\'         => \'h1\'
     ) 
);
然后可以在模板中使用它。js文件如下:

function onAJAXSuccess( target_id, obj ) { // calling this on ajax.success 
    var 
        title = obj.title
        content = obj.content
        string = \'<\'+obj.title_format+\'>\'+title+\'</\'+obj.title_format+\'>\'+content;
    ;

    jQuery( \'#\' + target_id ).html( string ).fadeIn();
}
然后这样称呼它:onAJAXSuccess( \'template_container_id\', your_template_object );.

结束

相关推荐

WordPress AJAX-如何在回调函数中返回True或False

因此,我已经使用Wordpress正确地设置了AJAX,并遵循了一些很好的教程,它工作得很好。有一件事我不太清楚,那就是如何在回调函数中正确地返回TRUE或FALSE。我的php函数如下:function my_callback() { if(something()) { echo \'false\'; } else { echo \'true\'; } exit; } 在JS