基于此处找到的代码:Assign Wordpress Short code to PHP Variable?
我已创建此代码以提供5个类别的列表:
add_action( 'woocommerce_after_main_content', 'inject_shortcode', 5 );
function inject_shortcode() {
if( is_shop() ) {
$my_header = '<br><h2 class="head" align="center">TOP BRANDS WE STOCK</h2>';
$my_shortcode_string = do_shortcode('[ux_product_categories style="normal" col_spacing="xsmall" columns="5" columns__sm="3" columns__md="5" animate="bounceInUp" ids="33,20,53,55,59,56,58,57,54" text_size="small" text_padding="0px 0px 0px 0px"]');
echo $my_header;
echo $my_shortcode_string;
}
}
但这仅适用于列表中的前5个类别。
现在。 我想向前迈出一步,将类别列表随机化, 因此,每个页面都会刷新,它将选择5个不同的类别。
我想到了以下代码: 但这没用 我在这里想念什么?
add_action( 'woocommerce_after_main_content', 'inject_shortcode', 5 );
function inject_shortcode() {
if( is_shop() ) {
$random_categories = array(33,20,53,55,59,56,58,57,54);
$random_keys = array_rand($random_categories,5);
$my_header = '<br><h2 class="head" align="center">TOP BRANDS WE STOCK</h2>';
$my_shortcode_string = do_shortcode('[ux_product_categories style="normal" col_spacing="xsmall" columns="5" columns__sm="3" columns__md="5" animate="bounceInUp"' && 'ids=' && $random_categories[$random_keys[0]] && 'text_size="small" text_padding="0px 0px 0px 0px"]');
echo $my_header;
echo $my_shortcode_string;
}
}
谢谢你, 阿密特。
答案 0 :(得分:0)
&&
是逻辑与。您需要使用.
进行字符串连接:
$my_shortcode_string = do_shortcode('[ux_product_categories style="normal" col_spacing="xsmall" columns="5" columns__sm="3" columns__md="5" animate="bounceInUp" ids="' . $random_categories[$random_keys[0]] . '"text_size="small" text_padding="0px 0px 0px 0px"]');
答案 1 :(得分:0)
$random_categories[$random_keys[0]]
只会返回$random_keys
中的第一个元素。您需要先构建ID字符串,然后才能将其回显为简码。
例如
foreach( $random_keys as $random_key ) {
$output_ids[] = $random_categories[$random_key];
}
然后将数组implode()
放入输出字符串:
$my_shortcode_string = do_shortcode('[ux_product_categories style="normal" col_spacing="xsmall" columns="5" columns__sm="3" columns__md="5" animate="bounceInUp" ids="' . implode(',', $output_ids) . '"text_size="small" text_padding="0px 0px 0px 0px"]');
(我假设您的简码要求将ID作为逗号分隔的列表,如果不将','
的{{1}}部分更改为分隔符所需的任何内容。)< / em>