从自定义页面调用时,Woocommerce产品归档不显示任何内容

时间:2020-02-05 13:08:27

标签: wordpress woocommerce woocommerce-theming

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

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,但这没有帮助。在阅读设置中正确设置了主页。

我是否缺少查询查询电话,还是其他电话?预先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

当WooCommerce创建内置商店页面时,它将使用option_name'woocommerce_shop_page_id'将创建的页面的ID保存在wp_options数据库表中。当WordPress加载页面时,WooCommerce将检查正在加载的页面的页面ID是否等于option_name'woocommerce_shop_page_id'的option_value,然后执行代码以生成商店页面的HTML。如果您在页面编辑器中查看了商店页面,您会发现内容为空。神奇的事情是使用针对此特殊ID执行的硬编码例程完成的。

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

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