这些天我一直在使用Woocommerce短代码(Woocommerce 3.8)。
对于许多产品,您可以将“class”作为值传递,例如产品快捷码:[products class="custom-class"]
然后返回内容的包装器将具有custom-class
.
But not for [reltative_products]!!??
如果您有一个动态设计,并且希望能够根据页面上显示的内容更改相关产品的设计,那么这将非常有用。
如果你看看the Woocommerce Docs 您可以看到以下功能:
public static function related_products( $atts ) {
if ( isset( $atts[\'per_page\'] ) ) {
$atts[\'limit\'] = $atts[\'per_page\'];
}
// @codingStandardsIgnoreStart
$atts = shortcode_atts( array(
\'limit\' => \'4\',
\'columns\' => \'4\',
\'orderby\' => \'rand\',
), $atts, \'related_products\' );
// @codingStandardsIgnoreEnd
ob_start();
// Rename arg.
$atts[\'posts_per_page\'] = absint( $atts[\'limit\'] );
woocommerce_related_products( $atts );
return ob_get_clean();
}
正如您所看到的,shortcode\\u atts中没有类???
How to change this?
SO网友:Peter Højlund Andersen
I have found a solution but i am not sure how good it is
1)将短代码复制到函数中。如果从上面复制函数link to Woocommerce Docs 并使用它创建自己的快捷码(it\\u related\\u products\\u函数),然后添加\'class\' => \'\'
对于参数,您现在可以将“class”传递给您的短代码。
function it_related_products_function( $atts ) {
if ( isset( $atts[\'per_page\'] ) ) {
$atts[\'limit\'] = $atts[\'per_page\'];
}
$atts = shortcode_atts( array(
\'limit\' => \'4\',
\'columns\' => \'4\',
\'orderby\' => \'rand\',
\'class\' => \'\',
), $atts, \'related_products\' );
ob_start();
$atts[\'posts_per_page\'] = absint( $atts[\'limit\'] );
woocommerce_related_products( $atts );
return ob_get_clean();
}
在
related.php
如果设置了,则返回
<section class="woocommerce columns-4 <?php echo !empty($class) ? $class : "" ?>">
现在,您可以在任何地方使用带有“class”的自定义快捷码
<?php echo do_shortcode(\'[it_related_products limit="4" class="row it-books-fp red-border-bottom"]\'); ?>