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

WordPres how to display the value of a variable from function.php file in my custom page?

使用这段 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;
}

但是我如何获得函数 returns 所在的数组?例如,我需要一个 PHP 数组,其中包含 fav_models.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 function
WordPress wp_send_json_error function


正在向另一个页面发送数据:

有多种方法可以做到这一点,您可以 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"]) : ""