我最终想做的是,当用户登录到该站点时,我想将重定向到包含该用户创建的所有帖子的页面,并希望通过AJAX请求加载这些帖子。
我已经保存了短代码,它将包含当前用户的所有帖子。
function ajax_write_here(){
$output = \'<div id="write_here_ajax_wrap"></div>\';
return $output;
}
add_shortcode(\'write-here-ajax\', \'ajax_write_here\');
并将php函数连接到AJAX请求
function write_here_ajax_dashboard() {
echo "test";
}
add_action( \'wp_ajax_write_here_get_posts\', \'write_here_ajax_dashboard\' );
文档中的jQuery函数就绪
jQuery(document).ready( function($) {
function write_here_list_page(){
$.ajax({
type: "GET",
url: ajax_object.ajax_url, // check the exact URL for your situation
dataType: \'html\',
data: {
action: \'write_here_get_posts\',
security: ajax_object.ajax_nonce
},
error: function(jqXHR, textStatus, errorMessage) {
console.log(errorMessage);
return false;
},
success: function(data) {
//console.log(data);
$(\'#write_here_ajax_wrap\').html(\'\');
$(\'#write_here_ajax_wrap\').append(data);
}
});
}
// Initiate function
write_here_list_page();
});
我现在的问题是jQuery功能在整个站点的所有页面都被触发了。如何使其仅在插入了快捷码的页面上触发?
最合适的回答,由SO网友:Ohsik 整理而成
您可以在shourcode中wp\\u enqueue\\u脚本。这是我修复的代码。
注册JS文件
function wh_enqueue() {
wp_register_script( \'wh-ajax-app\', WH_PATH . \'/js/write-here-ajax.js\', array(\'jquery\'), \'1.0.0\', true );
}
add_action( \'wp_enqueue_scripts\', \'wh_enqueue\' );
并在您的快捷码函数中排队
function ajax_write_here(){
wp_enqueue_script( \'wh-ajax-app\' ); // Enqueue your script here
$output = \'<div id="write_here_ajax_wrap"></div>\';
return $output;
}
add_shortcode(\'write-here-ajax\', \'ajax_write_here\');
这将只在插入了短代码的页面上加载JS文件。