我需要在主要类别WooCommerce的产品和子类别之间添加分隔线或Elementor模板.

我把它分开了,但我不能添加分隔符

我将此代码与Elementor模板短代码一起使用,但它由空格分隔

add_action( 'init', 'move_subcat_lis' );
function move_subcat_lis() {
    // Remove the subcat <li>s from the old location.
    remove_filter( 'woocommerce_product_loop_start', 'woocommerce_maybe_show_product_subcategories' );

    add_action( 'woocommerce_before_shop_loop', 'msc_product_loop_start', 40 );
    add_action( 'woocommerce_before_shop_loop', 'msc_maybe_show_product_subcategories', 50 );
    add_action( 'woocommerce_before_shop_loop', 'msc_product_loop_end', 60 );
}

/**
* Conditonally start the product loop with a <ul> contaner if subcats exist.
*/
function msc_product_loop_start() {
    $subcategories = woocommerce_maybe_show_product_subcategories();

    if ( $subcategories ) {
        woocommerce_product_loop_start();
    }
}

/**
* Print the subcat <li>s in our new location.
*/
function msc_maybe_show_product_subcategories() {
    echo woocommerce_maybe_show_product_subcategories();
}

/**
* Conditonally end the product loop with a </ul> if subcats exist.
*/
function msc_product_loop_end() {
    get_header();

    echo do_shortcode('[elementor-template id="2808"]'); 

    $subcategories = woocommerce_maybe_show_product_subcategories();

    if ( $subcategories ) {
        woocommerce_product_loop_end();
    }
}

推荐答案

this Wordpress StackExchange answer的基础上,您可以使用以下简化版本:

// Remove displayed subcategories from product loop
remove_filter( 'woocommerce_product_loop_start', 'woocommerce_maybe_show_product_subcategories' );

// Display subcategories before the product loop
add_action( 'woocommerce_before_shop_loop', 'display_product_subcategories', 50 );

function display_product_subcategories() {
    $categories = woocommerce_maybe_show_product_subcategories();

    if ( $categories ) {
        printf('<ul class="products categories columns-%d">%s</ul>',
            esc_attr( wc_get_loop_prop( 'columns' ) ), $categories );

        echo '<hr>'; // <== Divider 
    }
}

代码位于您的子主题的unctions.php文件中(或在插件中).经过测试,效果良好.

现在,您可以从以下位置替换<hr>分隔符:

echo '<hr>'; // <== Divider 

使用您的短代码,例如:

echo do_shortcode('[elementor-template id="2808"]'); 

Php相关问答推荐

文件大小在php下载读取文件中不可见

try 修改这个PHP代码如果语句在WordPress""

在函数内部获取一致的单选按钮值以更新WordPress用户数据

与会者在WooCommerce中按购物车项目数量自定义 checkout 字段

使用列入黑名单的单词和自定义业务逻辑的组合将特定的子字符串包装在HTML标记中

在Laravel中为表添加前缀,以将它们逻辑地分组

PHP空数组定义与开始或结束逗号

如何不重新查询模型A-&>;相关模型B-&>模型

将数据推入所有子数组条目

PHP Match如何准确判断条件?

将自定义字段添加到管理产品中 WooCommerce 3.2+ 中的快速编辑

过滤会员计划标题和标签

获取 Shopware 6 集合元素的值,PHP

PHP 简单 XML Xpath 上移树(带有名称的父级)

避免在 WooCommerce 中多次触发挂钩函数

图像未在 Laravel Ajax Crud 中显示

如何在自定义消息中包含 WooCommerce 选定的产品变体详细信息

显示时间范围内的可用空位,同时考虑已预订的空位

如何将数字文本文件添加到 PHP 数学方程式中?

Eloquent 的模型更新了它应该 laravel php 的更多行