【问题标题】:WooCommerce: Single-product-postslug template not working?WooCommerce:单一产品-postslug 模板不起作用?
【发布时间】:2016-06-26 03:50:05
【问题描述】:

首先,我知道 wordpress 不允许您为帖子使用模板(WooCommerce 的产品页面是通过帖子构建的)。所以我寻找Template Hierarchy。 上面写着:

single-{post-type}-{slug}.php(从 4.4 开始)。首先,WordPress 会为特定帖子寻找模板。

例如,如果帖子类型是产品并且帖子标签是 dmc-12,WordPress 会查找 single-product-dmc-12.php。

single-{post-type}.php – 如果帖子类型是产品,WordPress 会查找 single-product.php。
single.php – WordPress 然后回退到 single.php.
singular.php – 然后回退到singular.php.
index.php – 最后,如上所述,WordPress 最终回落到 index.php。

所以我创建了一个模板并将其命名为single-product-ccc(ccc 是我产品的 slug 名称之一),但没有任何反应,没有任何影响。
但是通过创建一个名为 single-product 的模板会影响到所有的产品页面。

为什么会这样?

我不明白。即使是 single-2313.php(2313 是一个帖子的 ID)也会覆盖该 2313 帖子的默认 single.php。

为什么 single-product-slug 的工作方式不同?

谢谢。

【问题讨论】:

    标签: php wordpress templates woocommerce


    【解决方案1】:

    让我先纠正你。你说:“WooCommerce 的产品页面是通过帖子构建的”。

    这是不正确的。 WooCommerce 创建一个新的帖子类型“产品”。您可以在此处查看 WooCommerce 创建的所有自定义帖子类型:https://docs.woocommerce.com/document/installed-taxonomies-post-types/

    “产品”帖子类型使用模板single-product.php。

    正如您所说,WordPress Template Hierarchy Docs 说您可以为特定产品创建模板:

    single-{post-type}-{slug}.php(从 4.4 开始)。首先,WordPress 为特定帖子寻找模板。例如,如果帖子类型是产品并且帖子 slug 是 dmc-12,WordPress 会查找 single-product-dmc-12.php。

    WooCommerce 是一个 WordPress 插件,因此它并不总是严格遵守 WordPress 规则,这就是其中一种情况。但是您可以使用过滤器很容易地纠正这个问题。在你主题的 functions.php 中简单地添加:

    add_filter( 'template_include', 'custom_single_product_template_include', 50, 1 );
    
    function custom_single_product_template_include( $template ) {
         if ( is_singular('product')  && (get_the_ID()==30)) {
               $template = get_stylesheet_directory() . '/woocommerce/single-product-30.php';
         } 
         return $template;
    }
    

    其中 get_the_ID() 是您的产品的 ID。现在,您可以创建一个新模板,例如 single-product-30.php

    【讨论】:

      【解决方案2】:

      尝试在functions.php中添加这个

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

      从现在开始,您可以使用 woocommerce/single-product.php 进行自定义

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-07
        • 2020-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多