Wordpress 表单操作不适用于 AMP



我正在尝试在wordpress中使用带有表单操作的AMP。我正在使用带有 POST 方法的操作 xhr。

当我提交表单时,它给出错误

  • 响应必须包含 AMP-访问控制-允许源-源标头
  • 表单提交失败:错误:响应必须包含 AMP 访问控制允许来源标头

甚至尝试添加标题,如下所示

header("AMP-Access-Control-Allow-Source-Origin: https://www.demo.com");

问题仍然存在。有什么建议吗?

我正在使用wordpress版本5.0.3

您可以使用

.htaccess文件设置标头。

Header set Access-Control-Allow-Origin 'https://cdn.ampproject.org​'
Header set AMP-Access-Control-Allow-Source-Origin 'https://your-domain.com'

或者有一个简单的例子给你;

function amp_comment_submit(){
  $comment = wp_handle_comment_submission( wp_unslash( $_POST ) );
  if ( is_wp_error( $comment ) ) {
    $data = intval( $comment->get_error_data() );
    if ( ! empty( $data ) ) {
      status_header(500);
      wp_send_json(array('msg' => $comment->get_error_message(),
                        'response' => $data, 
                        'back_link' => true ));
    }
  }
  else {
    @header('AMP-Redirect-To: '. get_permalink($_POST['comment_post_ID']));
    @header('AMP-Access-Control-Allow-Source-Origin: ' . $_REQUEST['__amp_source_origin'] );
    wp_send_json(array('success' => true));
  }
}
add_action('wp_ajax_amp_comment_submit', 'amp_comment_submit');
add_action('wp_ajax_nopriv_amp_comment_submit', 'amp_comment_submit');

更多 : https://medium.com/@surajair/creating-comment-form-on-amp-pages-in-wordpress-9dd675ba383b

如果使用WordPress的官方AMP插件,这些标头将通过AMP_HTTP::send_cors_headers()方法自动发送。

有关插件行为的更多信息,请参阅处理表单提交行动手册。

最新更新