我发布了以下问题: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主页上正常工作。
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);
}
});