1

所以在 Wordpress 中,我有一个 ajax 动作的钩子,看起来像这样:

add_action( 'wp_ajax_myhook', __NAMESPACE__ .'\myhook' );
function myhook() {

    $username = "webmaster@example.com";
    $password = "password!";
    $url = "http://00.00.000.1:8080/api/v1/generalsite";

    
    $options = array('http' =>
        array(
            'method'=>"GET",            
            'header' => 
                        "Authorization: Basic " . base64_encode("$username:$password") . "\r\n" .
                        "Content-type: application/json\r\n" .
                        "Accept: application/json"
                    
        )
    );    
    $context = stream_context_create($options);    
    $file = file_get_contents($url, false, $context);    
    $dataToShow = (array) json_decode($file);    
    wp_send_json($dataToShow);
}

从在浏览器端运行的一个单独的 Javascript 文件中,我有一个对 admin-ajax 的 jquery ajax 调用,它调用了这个函数。这个函数看起来像:

async function getmydata(){

    
    var data = {
        'action': 'myhook',
        'datatosend': JSON.stringify(someJSON)
    }

    const datapulleddown = $.ajax({
           url: wp.ajax.settings.url,
           type: "POST",
           data: data ,
           dataType: 'json',
           success: function (response, status) {
                console.log(`status is ${status}`);
                console.log(`data is ${data}`);
                thedataIwant = response;
           },
           error: function(jqXHR, textStatus, errorThrown) {
              console.log(`jqXHR is ${jqXHR}, textStatus is ${textStatus}, errorThrown is ${errorThrown}`);
              console.log(data);
           }
       });
    return datapulleddown;
}

这会从带有身份验证的 URL 中获取一个 json。但是,我希望能够在第二个浏览器端 ajax 调用中再次调用该钩子,但使用参数以便从 http(colon)//00(dot)00(dot)000(dot)1(冒号)8080/api/v1/generalsite/NEWPARAM。我对 PHP 相当缺乏经验,但我知道在 PHP 中我可以将标准函数传递给默认参数。我将如何编写一个新的 JS ajax 调用来提供 URL NEWPARAM,并更改 PHP 函数,以便我可以将它传递给这个新的 ajax 调用,NEWPARAM 是 myhook 的参数?

4

0 回答 0