首页 > 解决方案 > 使用 AJAX 在 Wordpress Session 中设置选定的语言

问题描述

我想在 WordPress 中使用会话来存储站点访问者选择的语言,以便我可以检查会话并在我的站点中设置语言。我是 WordPress 的新手,所以我不知道如何调用 PHP 文件并使用 jQuery 设置会话数据。我这样做是不是走错路了?有没有更简单的方法来存储这些变量并使用它们来更改 WordPress 中的前端?

我正在尝试从 jQuery 调用自定义 PHP 脚本:

 jQuery.ajax({
       type: "POST",
       url: "set-language.php",
       data: 'en',
 });

但我收到 404 not found 错误。

标签: phpjqueryajaxwordpresssession

解决方案


简单示例

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 对两者都有效。


推荐阅读