php - 使用 AJAX 在 Wordpress Session 中设置选定的语言
问题描述
我想在 WordPress 中使用会话来存储站点访问者选择的语言,以便我可以检查会话并在我的站点中设置语言。我是 WordPress 的新手,所以我不知道如何调用 PHP 文件并使用 jQuery 设置会话数据。我这样做是不是走错路了?有没有更简单的方法来存储这些变量并使用它们来更改 WordPress 中的前端?
我正在尝试从 jQuery 调用自定义 PHP 脚本:
jQuery.ajax({
type: "POST",
url: "set-language.php",
data: 'en',
});
但我收到 404 not found 错误。
解决方案
简单示例
data = {};
data.action = 'change_language';
data.language = 'en';
jQuery.post( ajaxurl, data, function ( response ) {
console.log( response ); // just for debugging
alert( response.some_more_data );
} );
ajaxurl
由 wordpress 提供并指向wp-admin/admin-ajax.php(仅在后端,在前端你必须在之前设置它 with <php echo admin_url('admin-ajax.php'); ?>
)
PHP代码:
// place this in your functions.php or where you want
function ajax_language_changer() {
$lang = $_REQUEST['language'];
// do stuff to change the language
$response = array(
'request' => $_REQUEST, // just for debugging
'what_ever_you_want' => 'mixed_data',
'some_more_data' => 'Im done',
'
);
wp_send_json( $response );
}
add_action( 'wp_ajax_change_language', 'ajax_language_changer' );
add_action( 'wp_ajax_nopriv_change_language', 'ajax_language_changer' );
钩子wp_ajax_nopriv_change_language
是为访客(前端)准备的。wp_ajax_change_language
用于登录用户。在这个例子中,ajax 对两者都有效。