根本原因是:
function sns_endpoint_data() {
// this line caused the site not to load
$message = Message::fromRawPostData();
/* additional code follows... */
}
add_action( \'template_redirect\', \'sns_endpoint_data\' );
没有if条件检查这是否确实是您希望在其上执行此操作的URL。因此
Message::fromRawPostData()
将在使用模板的每个页面上加载,而不考虑URL。
这是因为你从来没有检查过你在哪一页,你试图在错误的钩子里做工作。
处理规则
add_rewrite_tag( \'%apitest%\', \'([^&]+)\' );
add_rewrite_rule( \'test/([^&]+)/?\', \'index.php?apitest=$matches[1]\', \'top\' );
我们看到了
apitest
作为重写标记添加,但从未测试过。
因此,让我们修改template_redirect
要执行的操作:重定向模板,说出类似的内容:
function sns_apitest_template_redirect() {
global $wp_query;
if ( !empty( $wp_query->query_vars[\'apitest\'] ) ) {
$apitest= $wp_query->query_vars[\'apitest\'];
sns_handle_apitest_endpoint( $apitest );
exit;
}
add_action( \'template_redirect\', \'sns_apitest_template_redirect\' );
请注意,它试图检测
apitest
标记,如果它不为空,则调用一个函数,然后退出。这样,端点逻辑的代码就不会被弄乱
template_redirect
.
所以现在我们需要这个函数:
function sns_handle_apitest_endpoint( $apitest ) {
$message = Message::fromRawPostData();
// etc...
}