php WooCommerce:检查是否是商店页面而不是存档/类别

kcwpcxri  于 2023-06-28  发布在  PHP
关注(0)|答案(2)|浏览(154)

我想检查我是否在WooCommerce商店页面上。
有一个条件标记is_shop()。但这是true,即使我在存档页面上。
如果我检查is_archive()和/或is_post_type_archive(),商店页面也返回true
我尝试使用is_page('6')检查商店页面的页面ID(在我的示例中为6)。但是is_page()总是在商店页面上返回false?!
有没有办法检查我是否在商店页面上,而没有其他页面/存档?
我确实有一些档案,比如来自“WC Vendors Pro”的供应商档案,它没有任何条件标签。因此,我需要确切地知道我是否在商店页面(ID为6)上。

wyyhbhjk

wyyhbhjk1#

您也可以尝试这种自定义方式,

function shop_page_url_condition(){
    global $wp;
    $paged = get_query_var( 'paged');

    $shop_page_id = get_option( 'woocommerce_shop_page_id' );
    if(empty($shop_page_id)){return;}
    $shop_page_url = get_permalink($shop_page_id );
    
    if (!empty($paged)) {
        $shop_page_url = get_permalink($shop_page_id ).'page/'.$paged.'/';      
    }   
    $current_url = home_url(add_query_arg(array(), $wp->request.'/'));
    if( $shop_page_url == $current_url) {
        return true;
    }else{      
        return false;
    }
}
rsl1atfo

rsl1atfo2#

这里有另一个解决方案:

if (is_shop() && !property_exists(get_queried_object(), 'slug'))

这是可行的,因为商店主页的全局对象不包含“slug”属性。

相关问题