问题描述

在提出问题之前,我想告诉你,我已经在 https://stackoverflow.com/questions/15025213/wordpress-woocommerce-template-file-overiding 中问了这个问题

我正在使用 WooCommerce 插件来开发一个网站。 WooCommerce 一切都很好。根据我的要求,我已经从 WooCommerce 仪表板将我的主页配置为商店基础页面,使我的主页成为商店页面。现在我的要求是放置一些应该从管理端上传的图像,并在图像上显示一些文字。对于该功能,我通过 Google 搜索,有些人建议我使用 WordPress Advanced Custom Fields 。我刚安装好

现在我看到 WooCommerce 没有使用我的自定义主题。它正在使用自己的自定义主题。由于我想使用 Advanced Custom Fields plugin 显示图像和文本,我真的需要我自己的自定义模板来使用图像和文本的查询。然后,我再次搜索 Google 的解决方案,并得到建议,将主题的 page.php 复制到 woocommerce.php 中,然后替换代码:

     <?php while ( have_posts() ) : the_post(); ?>

      <?php get_template_part( 'content', 'page' ); ?>

      <?php comments_template( '', true ); ?>

    <?php endwhile; // end of the loop. ?>

<?php woocommerce_content(); ?>

我做到了,但我还没有得到我的 custom fields from Advanced Custom Fields 。请帮助我任何建议和帮助将是可观的。谢谢。

我的代码显示图像和文本的高级自定义字段是这样的:

<?php $product_tab_banner = get_field('product_tab_banner');
    if($product_tab_banner): ?>
   <?php var_dump($product_tab_banner); ?>
    <div class="nt-highlighted-products">
    <img src="<?php echo $product_tab_banner['url']; ?>" alt="<?php echo $product_tab_banner['alt']; ?>"  width="<?php echo $product_tab_banner['sizes']['featured_product-width'];?>" height="<?php echo $product_tab_banner['sizes']['featured_product-height'];?>" title="<?php echo $product_tab_banner['title']; ?>" />
    </div>
  <?php endif; ?>

我正在使用 WordPress TwentyEleven 主题。

最佳解决办法

通过你的问题,我想告诉你,woocommerce 不会使用你的自定义模板。它将使用自己的模板。当你想使用 wordpress advanced custom fields plugin 我想告诉你,该功能只适用于页面和帖子。所以 woocommerce 不会允许使用自己的自定义模板,不能使用高级自定义字段的功能。

现在只做一些不同的事情。只需制作自己的自定义模板,就可以显示您的产品。然后只需到站点 http://docs.woothemes.com/document/woocommerce-shortcodes/在这里您可以看到 woocommerceshortcodes 。您可以通过自己的定制轻松显示几乎所有的产品。现在使用这些 shortcodes 来显示产品。在这里,您已经实现了 woocommerce 正在使用您自己的自定义模板。现在,因为它是您自己的模板,您可以轻松地使用高级自定义字段。那么清楚吗如果有什么事情你不明白,然后回复我。希望这将有助于您。

次佳解决办法

我不太确定我是否正确地了解你的问题,但是我试图复制它。

首先,考虑这部分 WooCommerce documentation

If you want to edit one of these templates simply copy it into a directory within your theme named /woocommerce, keeping the same file structure, e.g. move /templates/cart/cart.php to themename/woocommerce/cart/cart.php. The copied file will now override the WooCommerce default template file.

二,这是复制步骤:

  • 使用 WP 3.5.1,TwentyEleven 1.5,WooCommerce 1.6.6 和 AdvancedCustomFields 4.0.0

  • 将页面”Shop” 设置为阅读设置 (/wp-admin/options-reading.php) 中的静态首页

  • 设置包含图像字段 (product_tab_banner) 的 ACF 字段组,返回值为”Image Object”,并显示在后置类型”Product” 中

解:

  • 创建以下文件夹:/wp-content/twentyeleven/woocommerce/

  • 复制文件:/wp-content/plugins/woocommerce/templates/content-product.php 到这个新创建的文件夹

  • 将您的代码放在 content-product.php 的这个副本中

$product_tab_banner = get_field('product_tab_banner');
if($product_tab_banner): ?>
    <div class="nt-highlighted-products">
    <img src="<?php echo $product_tab_banner['url']; ?>" 
        alt="<?php echo $product_tab_banner['alt']; ?>"  
        width="<?php echo $product_tab_banner['sizes']['featured_product-width'];?>" 
        height="<?php echo $product_tab_banner['sizes']['featured_product-height'];?>" 
        title="<?php echo $product_tab_banner['title']; ?>" />
    </div>
<?php endif; ?>

以下是产品页面:


click to enlarge

而这里的网站结果如下:


如果要自定义”Shop” 页面,请将文件/wp-content/plugins/woocommerce/templates/archive-product.php 复制到主题的/woocommerce/文件夹中。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。