不能像这样直接加载文件:
$(\'.homepage__slider\').load(\'wp-content/themes/mytheme/slider.php\');
还要注意,WordPress在中加载jQuery
noConflict mode, 所以
$
别名不工作。
如果您直接加载文件,WordPress的任何功能都无法工作。您应该使用AJAX API 这样所有内容都可以加载到WordPress上下文中。
您可以将处理PHP包装为一个函数:
function my_ajax_shortcode_wpse_108874() {
echo do_shortcode(\'[metaslider id="8302"]\');
die;
}
将其挂接到AJAX系统中:
add_action(\'wp_ajax_my_ajax_shortcode\', \'my_ajax_shortcode_wpse_108874()\');
add_action(\'wp_ajax_nopriv_my_ajax_shortcode\', \'my_ajax_shortcode_wpse_108874()\');
将您的请求提交到
http://site/wp-admin/admin-ajax.php
并通过
my_ajax_shortcode
作为Javascript发出请求时的参数。
var data = {
action: \'my_ajax_shortcode\'
};
jQuery.post(ajax_url, data, function(response) {
// whatever you need to do; maybe nothing
});
您可以设置
ajax_url
similarly to this from the Codex:
add_action( \'admin_enqueue_scripts\', \'my_enqueue\' );
function my_enqueue($hook) {
if( \'index.php\' != $hook ) return; // Only applies to dashboard panel
wp_enqueue_script( \'ajax-script\', plugins_url( \'/js/my_query.js\', __FILE__ ), array(\'jquery\'));
// in javascript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
wp_localize_script( \'ajax-script\', \'ajax_object\',
array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ), \'we_value\' => 1234 ) );
}