在产品类别页面中显示随机图像
Display random Images in product category page
我正在尝试在产品类别页面中随机显示 images/video。每个类别页面都会显示自己的一组图像。
我以典型的菜鸟方式在每个产品类别页面中添加了各自的图像集。有没有一种方法可以让我在 functions.php 处使用 hooks 来方便维护?
var total_images = 7;
var image1 = document.getElementById('banner1');
var image2 = document.getElementById('banner2');
var image3 = document.getElementById('banner3');
var random_numbers = [];
var random_number;
var random_img = [];
random_img[0] = '<a href="banner1.jpeg"><img src="banner1.jpeg"></a>';
random_img[1] = '<a href="banner2.jpeg"><img src="banner2.jpeg"></a>';
random_img[2] = '<a href="banner3.jpeg"><img src="banner3.jpeg"></a>';
random_img[3] = '<a href="banner4.jpeg"><img src="banner4.jpeg"></a>';
random_img[4] = '<a href="banner5.jpeg"><img src="banner5.jpeg"></a>';
random_img[5] = '<a href="banner6.jpeg"><img src="banner6.jpeg"></a>';
random_img[6] = '<a href="banner7.jpeg"><img src="banner7.jpeg"></a>';
while(random_numbers.length < 3){
random_number = Math.floor((Math.random() * total_images));
if(random_numbers.indexOf(random_number) < 0){
random_numbers.push(random_number);
}
}
image1.innerHTML = random_img[random_numbers[0]];
image2.innerHTML = random_img[random_numbers[1]];
image3.innerHTML = random_img[random_numbers[2]];
我以前开发过类似的东西,但在javascript里没有,都是php代码。
我用 ACF 在类别中添加了一个新的横幅字段(只有一个,你会有很多),然后在类别页面上我会显示那个横幅,或者递归地显示父亲的横幅,直到我找到一个。
你会有多个图像字段,你会随机提取一个,也许它对你有用。
无论如何,要使用的挂钩是:woocommerce_before_main_content 动作。
add_action('woocommerce_before_main_content','bannertop');
function bannertop() {recursebanner('banner_top','bannertop');}
function recursebanner($type,$class) {
if ( is_tax( 'product_cat' ) ) {
$term = get_queried_object();
$banner = get_field('banner_top', $term);
if ($banner) {
echo '<div class="'.$class.'">';
echo $banner;
echo '</div>';
} else {
// no banner defined, parse ancestors
$cat_ancestors = get_ancestors( $term->term_id, 'product_cat' );
foreach ($cat_ancestors as $cat_ancestor) {
$termancestor = get_term($cat_ancestor);
$banner = get_field($type, $termancestor);
if ($banner) {
echo '<div class="'.$class.'">';
echo $banner;
echo '</div>';
break;
}
}
}
}
}
如果你想使用 javascript,你必须将它添加到子主题的 js 文件中,并调用脚本,例如:
$ (function () {
// your code
});
简单的方法 - 安装 ACF 插件并创建您的字段 - https://prnt.sc/1yek9zy。
对于图像字段 select image url。根据需要复制横幅 1,并将位置规则设置为分类产品类别 - https://prnt.sc/1yekgys
然后转到产品类别并添加您的图片和 urls - https://prnt.sc/1yeklpf
如果您有 ACF pro,请改用中继器字段。它更具活力,您可以为每个产品类别添加任意数量的横幅。
使用此视觉挂钩指南更改您希望显示横幅的位置 - https://www.businessbloomer.com/woocommerce-visual-hook-guide-archiveshopcat-page/
function woo_category_banners() {
$term = get_queried_object();
$banners = get_field('banners', $term->taxonomy . '_' . $term->term_id);
if($banners):
echo '<div class="banners">';
foreach($banners as $k => $banner):
$banner_data = $banners[$k];
echo '<div class="banner"><a href="'.$banner_data['banner_url'].'"><img src="'.$banner_data['banner_image'].'"></a></div>';
endforeach;
echo '</div>';
endif;
}
add_action('woocommerce_before_shop_loop','woo_category_banners',40);
我正在尝试在产品类别页面中随机显示 images/video。每个类别页面都会显示自己的一组图像。
我以典型的菜鸟方式在每个产品类别页面中添加了各自的图像集。有没有一种方法可以让我在 functions.php 处使用 hooks 来方便维护?
var total_images = 7;
var image1 = document.getElementById('banner1');
var image2 = document.getElementById('banner2');
var image3 = document.getElementById('banner3');
var random_numbers = [];
var random_number;
var random_img = [];
random_img[0] = '<a href="banner1.jpeg"><img src="banner1.jpeg"></a>';
random_img[1] = '<a href="banner2.jpeg"><img src="banner2.jpeg"></a>';
random_img[2] = '<a href="banner3.jpeg"><img src="banner3.jpeg"></a>';
random_img[3] = '<a href="banner4.jpeg"><img src="banner4.jpeg"></a>';
random_img[4] = '<a href="banner5.jpeg"><img src="banner5.jpeg"></a>';
random_img[5] = '<a href="banner6.jpeg"><img src="banner6.jpeg"></a>';
random_img[6] = '<a href="banner7.jpeg"><img src="banner7.jpeg"></a>';
while(random_numbers.length < 3){
random_number = Math.floor((Math.random() * total_images));
if(random_numbers.indexOf(random_number) < 0){
random_numbers.push(random_number);
}
}
image1.innerHTML = random_img[random_numbers[0]];
image2.innerHTML = random_img[random_numbers[1]];
image3.innerHTML = random_img[random_numbers[2]];
我以前开发过类似的东西,但在javascript里没有,都是php代码。 我用 ACF 在类别中添加了一个新的横幅字段(只有一个,你会有很多),然后在类别页面上我会显示那个横幅,或者递归地显示父亲的横幅,直到我找到一个。 你会有多个图像字段,你会随机提取一个,也许它对你有用。
无论如何,要使用的挂钩是:woocommerce_before_main_content 动作。
add_action('woocommerce_before_main_content','bannertop');
function bannertop() {recursebanner('banner_top','bannertop');}
function recursebanner($type,$class) {
if ( is_tax( 'product_cat' ) ) {
$term = get_queried_object();
$banner = get_field('banner_top', $term);
if ($banner) {
echo '<div class="'.$class.'">';
echo $banner;
echo '</div>';
} else {
// no banner defined, parse ancestors
$cat_ancestors = get_ancestors( $term->term_id, 'product_cat' );
foreach ($cat_ancestors as $cat_ancestor) {
$termancestor = get_term($cat_ancestor);
$banner = get_field($type, $termancestor);
if ($banner) {
echo '<div class="'.$class.'">';
echo $banner;
echo '</div>';
break;
}
}
}
}
}
如果你想使用 javascript,你必须将它添加到子主题的 js 文件中,并调用脚本,例如:
$ (function () {
// your code
});
简单的方法 - 安装 ACF 插件并创建您的字段 - https://prnt.sc/1yek9zy。 对于图像字段 select image url。根据需要复制横幅 1,并将位置规则设置为分类产品类别 - https://prnt.sc/1yekgys
然后转到产品类别并添加您的图片和 urls - https://prnt.sc/1yeklpf 如果您有 ACF pro,请改用中继器字段。它更具活力,您可以为每个产品类别添加任意数量的横幅。
使用此视觉挂钩指南更改您希望显示横幅的位置 - https://www.businessbloomer.com/woocommerce-visual-hook-guide-archiveshopcat-page/
function woo_category_banners() {
$term = get_queried_object();
$banners = get_field('banners', $term->taxonomy . '_' . $term->term_id);
if($banners):
echo '<div class="banners">';
foreach($banners as $k => $banner):
$banner_data = $banners[$k];
echo '<div class="banner"><a href="'.$banner_data['banner_url'].'"><img src="'.$banner_data['banner_image'].'"></a></div>';
endforeach;
echo '</div>';
endif;
}
add_action('woocommerce_before_shop_loop','woo_category_banners',40);