更新:
没人叫否决!反对我的解决方案,所以我假设这样可以正常工作。
问题/解决方案:
这是我以前的问题:
WP Woo - custom endpoint is deleted after saving Woo settings
我没有看到任何其他解决方案,只是在每次调用链接时强制检查端点是否存在。
我想知道:这种方法的缺点是什么?
我最终得到的代码(经过多次测试,似乎工作正常):
add_action('template_redirect', array($this, 'check_the_endpoint'));
function check_the_endpoint() {
global $wp;
if ( ! is_admin() ) {
if( ! empty($wp->query_vars['attachment']) && $wp->query_vars['attachment'] == 'moje-punkty') {
echo 'moje-punkty - 404 error';
add_rewrite_endpoint( 'moje-punkty', EP_ROOT | EP_PAGES );
$this->foc_points_flush_rewrite_rules();
header( 'Location: ' . home_url( $wp->request ));
}
else if( isset($wp->query_vars['moje-punkty'])) {
echo 'moje-punkty - works!';
}
else {
echo 'any other page';
}
}
}
答案 0 :(得分:0)
如果有人遇到相同的问题,这似乎是一个答案:
add_action('template_redirect', array($this, 'check_the_endpoint'));
function check_the_endpoint() {
global $wp;
if ( ! is_admin() ) {
if( ! empty($wp->query_vars['attachment']) && $wp->query_vars['attachment'] == 'moje-punkty') {
echo 'moje-punkty - 404 error';
add_rewrite_endpoint( 'moje-punkty', EP_ROOT | EP_PAGES );
$this->foc_points_flush_rewrite_rules();
header( 'Location: ' . home_url( $wp->request ));
}
else if( isset($wp->query_vars['moje-punkty'])) {
echo 'moje-punkty - works!';
}
else {
echo 'any other page';
}
}
}
很不方便,每个 ECHO 和 ELSE IF 和 ELSE 都将被删除-这仅是出于测试目的。>