【问题标题】:Woocommerce product archive displays nothing when called from custom Page从自定义页面调用时,Woocommerce 产品档案不显示任何内容
【发布时间】:2020-05-21 09:54:24
【问题描述】:

我有一个 woocommerce 商店页面,可以完美地向我展示所有产品。此页面在设置中也设置为“商店”页面。现在我想要一个名为 Home 的第二个页面,它应该使用与商店页面相同的模板。 (基本上是没有分类和一些新闻的第二个商店页面)

home-template.php

<?php /* Template Name: Homepage */ 
    if ( ! defined( 'ABSPATH' ) ) {
        exit; // Exit if accessed directly
    }
    wc_get_template( 'archive-product.php' );
?>

我正在使用来自 woocommerce 的 github 的标准存档产品模板。

我可以看到正在加载的模板,例如标题,但某些 woocommerce 函数不会返回预期值。 woocommerce_before_shop_loop 不返回任何内容,即使它应该显示 orderby 下拉列表。 woocommerce_product_loop() 返回 true,但 wc_get_loop_prop('total') 返回零。

我也尝试将文件重命名为front-page.php,但这没有帮助。主页在阅读设置中设置正确。

我错过了对查询的调用,还是其他原因?提前感谢您的帮助!

【问题讨论】:

    标签: wordpress woocommerce woocommerce-theming


    【解决方案1】:

    当 WooCommerce 创建内置商店页面时,它会将创建页面的 id 保存在 wp_options 数据库表中,其中 option_name 为“woocommerce_shop_page_id”。当 WordPress 加载页面时,WooCommerce 检查正在加载的页面的页面 id 是否等于 option_name 'woocommerce_shop_page_id' 的 option_value,然后执行代码以生成商店页面的 HTML。如果您在页面编辑器中查看过商店页面,您会注意到内容是空的。魔术是通过为这个特殊 id 执行的硬编码例程完成的。

    由于您的自定义页面具有不同的页面 ID,因此不会执行任何用于生成商店页面的自定义代码。因此,您需要为您的自定义页面执行此魔术代码。可以,但您需要对 WooCommerce 有很好的了解。

    我建议您重新考虑您的设计,不要使用新页面,而是使用操作和过滤器自定义现有的商店页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 2017-06-14
      相关资源
      最近更新 更多