如何在进行AJAX调用时加载插件?

时间:2014-01-09 作者:Manolo

我发布了以下问题:How to use shortcodes on a widget sidebar when doing an ajax call?, 没有答案。现在我想问一个更具体的问题。

问题似乎是插件没有处理短代码。,好像我用例如。[audio src="audioFile.ogg"] 它工作得很好。

所以我猜测,如果之前加载了插件,我可以让它工作。但我不知道如何实现它(也许我错了)。

有什么建议吗?

这是中的代码functions.php:

add_action( \'init\', function() { 
  ps_register_shortcode_ajax( \'ps_get_slider\', \'8\' ); 
} );

function ps_register_shortcode_ajax( $callable, $action ) {
    if(isset($_POST[\'href\'])) {
        $pageId = preg_match( \'/^http:\\/\\/.+\\/\\?page_id=\\d+$/\', $_POST[\'href\'] ) ? substr( strrchr( $_POST[\'href\'], \'=\' ), 1 ) : \'8\' ;

        if ( empty( $pageId ) || $pageId != $action )
            return;

        call_user_func( $callable );
    }
}

function ps_get_slider() {
    //require_once(\'../wp-load.php\'); Nothing changes

    apply_filters(\'ps_register_shortcode_ajax\', \'slider_widget_init\');
    if ( dynamic_sidebar(\'Slider\') ) : else : endif;
    //echo do_shortcode( \'[promoslider post_type="news" height="300px" width="70%" numberposts="5" start_on="first" display_title="fancy" display_excerpt="excerpt"  pause_on_hover="pause"]\' );
    get_template_part( \'home\', \'ajax\' );
    die(); 
} 
滑块侧栏仅加载在主页和主页ajax页面中(id=8)。它可以在主页上正常工作,但不能在ajax主页上正常工作。

1 个回复
SO网友:Chris_O

您没有正确使用ajax。为什么要将ajax回调函数添加到init操作中?你需要阅读http://codex.wordpress.org/AJAX_in_Plugins

将ajax回调函数附加到wp_ajax_your_defined_action 像这样:

add_action( \'wp_ajax_your_defined_action\', \'your_callbck_function\' );

为此,您必须使用wp-admin/admin-ajax。php作为您的ajax url,您必须将您的\\u defined\\u action发布到action。

            $.ajax({
                type: \'POST\',
                url: ajaxurl, //This is defined only on admin side
                data: {
                    action: \'your_defined_action\',
                    some_var: \'Some Var Content\'
                },
                success: function (response) {
                    alert(response);
                }
            });

结束

相关推荐

Has_ShortCode()-如何检测嵌套的短码

我正在使用has_shortcode() 要检测短代码,它可以工作,但根本不能。如果我将这个指定的短代码放在另一个短代码中has_shortcode() 功能停止工作。has_shortcode( $post->post_content, \'slider\' ) 例如:[2col] //left column [slider] [2col_next] //right column [slider] [/2col] Thehas_shortcode