WP Woo-每次调用链接时检查端点是否存在

时间:2019-07-23 09:24:11

标签: wordpress woocommerce endpoint

更新

没人叫否决!反对我的解决方案,所以我假设这样可以正常工作。


问题/解决方案:

这是我以前的问题:

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';
        }
    }
}

1 个答案:

答案 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 都将被删除-这仅是出于测试目的。