Woocommerce 类别页面:在子类别之前显示产品

时间:2021-06-18 11:32:01

标签: wordpress sorting woocommerce categories

我找了几个小时的解决方案,但我找不到我要找的解决方案... 在一个新的 woocommerce 安装中,我的类别在同一级别上同时包含产品和子类别。因此,正如预期的那样,woocommerce 将它们显示在父类别页面上:首先是子类别,然后是产品。 我会“只是”交换两个“调用”的位置,先显示产品,然后再显示子类别。最初,我认为这将是一个简单的黑客攻击。但是在网上什么也没找到,我开始认为我遗漏了一些明显的东西,我可以使用标准选项获得所需的行为?! 该网站尚未公开,但为了提供更多背景信息, 目前页面输出是

  • subcat1
  • subcat2
  • subcat3
  • prod1
  • prod2
  • prod3

其实我很想拥有

  • prod1
  • prod2
  • prod3
  • subcat1
  • subcat2
  • subcat3

如果有人能提供帮助将不胜感激! 谢谢

编辑:按照链接建议的 https://gist.github.com/twoelevenjay/a2195b052c4feb046d7f71fcae5c4d1b,我实现了我所需要的。我在评论中使用了@fkoomek 建议的第二个示例。 曾经把他的代码粘贴到我子主题的function.php里,我改了

WHEN NEW.Complete

<?php

if (
    $attachments = get_posts([
        "post_type" => "attachment",
        "post_mime_type" => "image",
        "numberposts" => 1,
        "post_status" => null,
        "post_parent" => $post->ID,
    ])
);
foreach ($attachments as $attachment) {
    echo wp_get_attachment_image(
        $attachment->ID,
        "",
        true,
        false,
        "Link to image attachment"
    );
}

?>

唯一的问题是现在我有两个嵌套的 UL ......不是一个大问题,但我仍然无法弄清楚如何避免 UL 重复...... 谢谢!

1 个答案:

答案 0 :(得分:0)

假设您不使用页面构建器(例如 Divi 或 Elementor),您需要覆盖 woocommerce 模板来实现这一点。您甚至可能需要在子主题的functions.php 中添加一些函数(始终使用子主题以避免在下次更新时丢失更改)。

以下是有关 Woocommerce 中模板覆盖如何工作的文档:https://docs.woocommerce.com/document/template-structure/

您还可以在此处找到与您的问题相关/接近的讨论:https://wordpress.org/support/topic/subcategories-are-showing-with-the-categories-and-products/

还有一个可以为您指明正确道路的例子:https://gist.github.com/twoelevenjay/a2195b052c4feb046d7f71fcae5c4d1b

尽管如果您不习惯操作 php,我强烈建议您请专业人士为您操作,因为操作不当可能会破坏您的网站。