gpt4 book ai didi

wrapper - 更改 Woocommerce 中的简码包装器

转载 作者:行者123 更新时间:2023-12-02 14:12:36 27 4
gpt4 key购买 nike

我正在使用 Wordpress 3.8 + Woocommerce 2.0我需要更改使用短代码时 Woocommerce 生成的包装器的类。

我使用这个短代码:[recent_products per_page="12"]输出为:

<div class="woocommerce">
the_product_loop....
</div>

我想获得

<div class="MYCUSTOMCLASS">
the_product_loop....
</div>

但是我找不到需要更改代码的地方...在 class-wc-shortcodes.php 文件中,我找到了生成包装器的函数的声明:

public static function shortcode_wrapper(
$function,
$atts = array(),
$wrapper = array(
'class' => 'woocommerce',
'before' => null,
'after' => null
)
)

但是...我不想更改 Woocommerce 插件的核心文件,可以通过functions.php 定义我的自定义类吗??

最佳答案

您可以创建自己的短代码,只是默认短代码的克隆,但进行了更改,因此请将其粘贴到您的functions.php中:

function custom_recent_products_FX($atts) {
global $woocommerce_loop, $woocommerce;

extract(shortcode_atts(array(
'per_page' => '12',
'columns' => '4',
'orderby' => 'date',
'order' => 'desc'
), $atts));

$meta_query = $woocommerce->query->get_meta_query();

$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => $per_page,
'orderby' => $orderby,
'order' => $order,
'meta_query' => $meta_query
);

ob_start();

$products = new WP_Query( $args );

$woocommerce_loop['columns'] = $columns;

if ( $products->have_posts() ) : ?>

<?php woocommerce_product_loop_start(); ?>

<?php while ( $products->have_posts() ) : $products->the_post(); ?>

<?php woocommerce_get_template_part( 'content', 'product' ); ?>

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

<?php woocommerce_product_loop_end(); ?>

<?php endif;

wp_reset_postdata();

return '<div class="MY_CUSTOM_CLASS">' . ob_get_clean() . '</div>';
}
add_shortcode('custom_recent_products','custom_recent_products_FX');

注意该函数末尾的“MY_CUSTOM_CLASS”,根据您的需要更改它。

这将创建一个新的短代码,几乎与“recent_products”相同,但仅发生变化。

因此,要输出此内容,只需在模板上使用:

 echo do_shortcode('[custom_recent_products per_page="3"]');

或者在您的帖子中:

 [custom_recent_products per_page="3"]

我不知道这是否是最好的方法,但就我所见,类“woocommerce”直接以html形式返回到recent_products短代码函数上,所以我无法想象如何过滤或 Hook 它通过另一种方式。

希望有所帮助,抱歉我的英语不好:)

关于wrapper - 更改 Woocommerce 中的简码包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21482764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com