首页 > 解决方案 > 主题设置后的 WordPress WooCommerce 不起作用

问题描述

我只想在我的主题中自定义 WooCommerce 的主题。但问题是当我添加 WooCommerce 模板的文件夹以覆盖 WooCommerce 主题并添加此功能后:

function add_woocommerce_support() {
    add_theme_support( 'woocommerce' );
}
add_action( 'after_setup_theme', 'add_woocommerce_support' );

商店页面未显示产品列表。相反,存档帖子正在显示。但是当我评论 woocommerce 主题设置的 add_action 时,一切正常。看这张图片:

在此处输入图像描述

我还有这个功能可以在存档页面中显示我的自定义帖子类型所有帖子:

function add_cpt_program_in_archive( $query ) {
    if ( !is_admin() && $query->is_archive() && $query->is_main_query() ) {
    $query->set( 'post_type', array('post', 'program' ) );
    }
}
add_action( 'pre_get_posts', 'add_cpt_program_in_archive' );

我还尝试在我的 add_cpt_program_in_archive 函数的条件下添加 !is_shop() 。所以它看起来像这样:

function add_cpt_program_in_archive( $query ) {
    if ( !is_admin() && $query->is_archive() && $query->is_main_query() && !is_shop() ) {
    $query->set( 'post_type', array('post', 'program' ) );
    }
}
add_action( 'pre_get_posts', 'add_cpt_program_in_archive' );

商店页面现在显示产品列表。但问题是当我访问产品的类别页面时。例如未分类的类别。它不显示未分类类别中的产品列表。看这张图片:

在此处输入图像描述

标签: wordpresswoocommercewordpress-themingcustom-post-typewoocommerce-theming

解决方案


我找到了解决方案。我在 add_cpt_program_in_archive 函数的条件下添加此代码 !$query->query_vars['product_cat']) 。所以它看起来像这样

function add_cpt_program_in_archive( $query ) {
    if ( !is_admin() && $query->is_archive() && $query->is_main_query() && !is_shop() && !$query->query_vars['product_cat']) {
    $query->set( 'post_type', array('post', 'program' ) );
    }
}
add_action( 'pre_get_posts', 'add_cpt_program_in_archive' );

但我不知道这是否是正确的格式,或者也许你们有更好的建议答案而不是我的解决方案。


推荐阅读