如何检查我们不在Woocommerce端点

ret*_*iff 3 endpoints woocommerce

因为订单收到的WooCommerce 2.1页面已被删除并替换为WC端点.我的结帐页面有一个自定义页面模板(page-checkout.php),现在所有结帐端点也使用此自定义页面模板.

我需要修改我的页眉和页脚只有当我的客户在/ checkout /页面时,但我想在结帐端点时显示不同的内容.我发现这个条件:

if(is_wc_endpoint_url("order-received")) echo "yes";
Run Code Online (Sandbox Code Playgroud)

它在我们处于"订单接收"结账端点时有效.但我正在寻找一个条件逻辑,告诉我什么时候我们不在端点,如:

if(!is_wc_endpoint()) echo "yes";
Run Code Online (Sandbox Code Playgroud)

谢谢.

S. *_*lik 6

这些问题似乎得到了回答并且有点陈旧.但我找到了一个更好的解决方案,这可能会帮助其他人.

你可以使用以下功能.文档

is_wc_endpoint_url()
Run Code Online (Sandbox Code Playgroud)

如果在没有参数的情况下使用,它将检查针对所有端点的当前URL.如果端点被指定为

is_wc_endpoint_url('edit-account');
Run Code Online (Sandbox Code Playgroud)

它将检查url是否具有特定端点.


Rat*_*pps 2

尝试以下功能:

function is_wc_endpoint() {
    if ( empty( $_SERVER['REQUEST_URI'] ) ) return false;
    $url = parse_url( $_SERVER['REQUEST_URI'] ); 
    if ( empty( $url['query'] ) ) return false;
    global $wpdb;
    $all_woocommerce_endpoints = array();
    $results = $wpdb->get_results( "SELECT option_name, option_value FROM {$wpdb->prefix}options WHERE option_name LIKE 'woocommerce_%_endpoint'", 'ARRAY_A' );
    foreach ( $results as $result ) {
        $all_woocommerce_endpoints[$result['option_name']] = $result['option_value'];
    }
    foreach ( $all_woocommerce_endpoints as $woocommerce_endpoint ) {
        if ( strpos( $url['query'], $woocommerce_endpoint ) !== false ) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

希望它能给您带来您期望的结果。