WordPres如何在我的自定义页面中显示function.php文件中的变量值



使用这段JavaScript代码,我将post的ID(像数组一样(添加、获取并传递到function.php文件。

  const nonRegister = document.querySelectorAll('.non-register')
  nonRegister.forEach(item=>{
  item.addEventListener('click', function(){
    let postNumber = item.getAttribute('data-post-id');
    let myFavoriteArray = JSON.parse(localStorage.getItem("favoriteItems") || "[]");
    let retrievedData = localStorage.getItem("favoriteItems");
    let retrievedDataArray = JSON.parse(retrievedData);
    if(retrievedDataArray !== null && retrievedDataArray.includes(postNumber)){
        alert('This model has already been added to favorites')
    }else{
        myFavoriteArray.push(postNumber);
        localStorage.setItem("favoriteItems", JSON.stringify(myFavoriteArray));
        let forConversion = JSON.parse(retrievedData);
        data = {
            'action': 'vicso_non_register',
            'forConversion': forConversion,
        }
            jQuery.ajax({
               type:'post',
               url: object_url.url,
               data: data,
               cache: false,
               success: function(data){
                 console.log(data)
               }
           });
         }
      })
   })

这是我在function.php文件中的代码。

add_action( 'wp_ajax_nopriv_vicso_non_register', 'vicso_non_register' );
add_action( 'wp_ajax_vicso_non_register', 'vicso_non_register' );
function vicso_non_register(){
    $favorite_array    = $_POST['forConversion'];
    echo   $test = json_encode(array('favorite_array'=>$favorite_array));
    die;
}

但是,如何获取函数返回的数组呢?例如,我需要一个在fav_models.php上包含这些数据的PHP数组。

如果有人能提出建议,请帮忙。

以json格式将数据作为ajax响应发送回

您可以使用wordpress wp_send_json_successwp_send_json_error函数。

add_action( 'wp_ajax_nopriv_vicso_non_register', 'vicso_non_register' );
add_action( 'wp_ajax_vicso_non_register', 'vicso_non_register' );
function vicso_non_register(){
    $favorite_array    = sanitize_text_field($_POST['forConversion']);
  
    wp_send_json_success($favorite_array); 
   // or you could send it via  "wp_send_json_error", if you need to!
}

在前端,您可以console.logfunction.php返回的响应。

您可以在文档页面上阅读更多关于这两个函数的信息。

WordPress wp_send_json_success函数
WordPress的wp_send_json_error函数


将数据发送到另一个页面

有多种方法可以做到这一点,你可以localize your script,或者我更喜欢以query_var/query string的形式发送。

add_action( 'wp_ajax_nopriv_vicso_non_register', 'vicso_non_register' );
add_action( 'wp_ajax_vicso_non_register', 'vicso_non_register' );
function vicso_non_register(){
    $favorite_array    = sanitize_text_field($_POST['forConversion']);
    wp_send_json_success($favorite_array); // send the data back to the ajax call
  
    if(!empty($favorite_array)){
      wp_safe_redirect(site_url('/fav_models.php/?favorite='.$favorite_array));
      exit;
    }
    
}

然后在";fav_models.php";您可以使用以下方法访问该值:

$new_page_variable = isset($_GET["favorite"]) ? sanitize_text_field($_GET["favorite"]) : ""  

相关内容

最新更新