如何让WordPress响应Woo产品页面末尾的GET请求

时间:2019-08-18 作者:Difster

如果在页面末尾添加了参数,我需要在WooCommerce产品页面上启动一个操作。例如:

https://somesite.com/products/some-random-product?some-parameter=true

如果启动此操作,它将通过API从外部源同步产品定价(我已经知道怎么做)并重新加载页面。

我不知道的是如何让执行同步的插件响应GET请求参数。

如果这是最好的解决方案,我很乐意使用WordPress API。我以前创建过插件,只是没有处理过这种情况。

谢谢

1 个回复
SO网友:Antti Koskinen

如果您想在用户没有注意到的情况下或多或少地进行处理和重新加载,可以在上执行自定义函数template_redirect 行动

function check_parameter() {

  if ( isset( $_GET[\'bar\'] ) && \'foo\' === $_GET[\'bar\'] && is_singular( \'product\' ) ) {

    // get remote data e.g. with wp_remote_get( \'http://example.com\' );

    // do something

    // redirect
    global $wp;
    wp_redirect( home_url( $wp->request ) ); // this should redirect to the same url without parameters
    die;

  }

}
add_action( \'template_redirect\', \'check_parameter\' );
如果您想向用户展示正在发生的事情,那么可以使用admin ajax(或wp rest api)。像这样的,

PHP

add_action( \'wp_ajax_my_action\', \'my_action_function\' );
add_action( \'wp_ajax__nopriv_my_action\', \'my_action_function\' ); // for non logged in users, if needed

function my_action_function() {

  // check nonce

  // check for capabilities, if needed

  // check for required $_POST parameters / values

  // do something

  wp_send_json_error( $data );

  // or 

  wp_send_json_success( $data ); // $data could be the new price for example

}
jQuery(如果愿意,可以使用js)

jQuery.ajax({
  method: \'POST\',
  url: \'admin-ajax.php\', // use wp_localize_script for this
  data: {
    action: \'my_action\',
    nonce: \'your-nonce-field-value\', // use wp_localize_script for this
    bar: \'foo\', // use js/jquery to get url parameter(s)
  },
  success: function(response){
    // do something with response.data
  },
});

相关推荐

WP REST API-将分类搜索限制为第一个字母

我正在尝试建立一个a-Z索引,并希望通过分类名称的第一个字母过滤自定义分类的响应。所以,如果我有[\'Ana\', \'Olina\', \'Ford\'], 我想要一些wp-json/wp/v2/names/?starts_with=A 只给我一个“Ana”。现在如果我这样做了names/?search=A, 我得到“安娜”和“奥莉娜”我已经找过了,但没有找到任何类似的。