获取当前WooCommerce终结点不工作

时间:2017-10-09 作者:rwkiii

我需要从我的帐户导航中知道我在哪个端点上。php。我想做如下事情:

if( is_wc_endpoint(\'my-endpoint-1\') ) {
    echo "My Endpoint #1";
}
if( is_wc_endpoint(\'my-endpoint-2\') ) {
    echo "My Endpoint #2";
}
或:

$endpoint = WC()->query->get_current_endpoint();
if( \'my-endpoint-1\' === $endpoint ) ) {
    echo "My Endpoint #1";
}
if( \'my-endpoint-2\' === $endpoint ) ) {
    echo "My Endpoint #2";
}
。。。但两者都不起作用。

在第一个示例中is_wc_endpoint(\'my-endpoint-1\') 始终是false.

在第二个示例中WC()->query->get_current_endpoint() 始终为空。

在现有的WC模板中,页面标题静态显示在导航栏后的每个模板中。例如<h2>Edit Account</h2>. 我需要在导航栏上方显示端点标题,导航栏位于端点内容挂钩之外。因此,我必须确定当前端点并有条件地显示端点。

此外,现有的WC端点可以正确地处理上述调用,但我的自定义端点都不能工作。甚至打电话is_wc_endpoint(\'my-endpoint-1\') 从我的一个自定义端点返回false.

我在函数中定义自定义端点。php具有:

function add_my_account_endpoints() {
    add_rewrite_endpoint( \'properties\', EP_ROOT | EP_PAGES );
    add_rewrite_endpoint( \'inbox\', EP_ROOT | EP_PAGES );
    add_rewrite_endpoint( \'help\', EP_ROOT | EP_PAGES );
    add_rewrite_endpoint( \'submit-ticket\', EP_ROOT | EP_PAGES );
}
add_action( \'init\', \'add_my_account_endpoints\' );
自定义端点必须有不同的或额外的要求?如何从一个自定义端点中准确地知道我在哪个端点上?

1 个回复
最合适的回答,由SO网友:mmm 整理而成

使用WC()->query->get_current_endpoint() 您必须向Woocommerce声明您的新端点:

add_filter("woocommerce_get_query_vars", function ($vars) {

    foreach (["properties", "inbox", "help", "submit-ticket"] as $e) {
        $vars[$e] = $e;
    }

    return $vars;

});

结束

相关推荐