如何输出打印新品推荐或新品分类
需求信息
1、通过ACF为系统的category创建了两个自定义字段分分别为cat_cover_image(图片url) 、 new_series(true or false型,勾选则显示在首页);
2、需要打印出new_series为勾选状态下的分类名称+链接、cat_cover_image(封面图);
3、打印的Layout参考按如下格式进行:
<div class="entry portfolio-item border-0">
<div class="portfolio-image">
<a href="分类链接"><img src="分类封面图" ></a>
</div>
<div class="portfolio-desc entry-body px-0 pt-3 text-center">
<h4 class="entry-title"> <a href="分类链接">分类名称</a></h4>
</div>
</div>
实施方法
通过ACF获取自定义字段,并根据new_series
字段的状态来筛选需要显示的分类。下面的代码示例展示了如何实现这个功能,并将分类名称、链接、和封面图按照你提供的布局输出:
<?php
// 获取所有分类
$categories = get_categories(array(
'taxonomy' => 'category',
'hide_empty' => false, // 显示没有文章的分类
));
// 遍历每个分类,检查new_series字段是否为勾选状态
if ($categories) :
foreach ($categories as $category) :
// 获取自定义字段的值
$new_series = get_field('new_series', 'category_' . $category->term_id); // 获取new_series
$cat_cover_image = get_field('cat_cover_image', 'category_' . $category->term_id); // 获取cat_cover_image
// 检查new_series是否为true
if ($new_series) : ?>
<div class="entry portfolio-item border-0">
<div class="portfolio-image">
<a href="<?php echo get_category_link($category->term_id); ?>">
<img src="<?php echo esc_url($cat_cover_image); ?>" alt="<?php echo esc_attr($category->name); ?>">
</a>
</div>
<div class="portfolio-desc entry-body px-0 pt-3 text-center">
<h4 class="entry-title">
<a href="<?php echo get_category_link($category->term_id); ?>">
<?php echo esc_html($category->name); ?>
</a>
</h4>
</div>
</div>
<?php endif;
endforeach;
endif;
?>
代码说明:
- 获取分类: 使用
get_categories()
获取所有分类。 - 获取ACF自定义字段: 使用
get_field()
获取new_series
和cat_cover_image
的值。 - 检查
new_series
状态: 只有在new_series
被勾选(为true
)时,才会输出分类的名称、链接、和封面图。 - HTML布局: 输出的HTML结构与您提供的相匹配,包括封面图和分类名称的链接。
注意事项:
- 请确保你已经通过ACF设置了分类的自定义字段,并正确绑定了
category
类型的字段组。
如何输出单品?
如果需要打印Post信息(产品单品为“新品”),参考代码如下:
<?php
$posts_per_row = 2; // 每行的文章数量
$args = array(
'post_type' => 'product',
'posts_per_page' => 3, // 获取数量
'meta_query' => array(
array(
'key' => 'new_arrivals', // 字段名称
'value' => '1', // 对于 true,通常存储为 '1'
'compare' => '==', // 比较方式
),
),
);
$tit_query = new WP_Query($args);
if ($tit_query->have_posts()) :
$i = 0; // 用于跟踪当前文章索引
while ($tit_query->have_posts()) : $tit_query->the_post();
?>
<div class="col-md-4"><?php get_template_part( 'template-parts/items', 'product' ); ?></div>
<?php $i++;
endwhile;
wp_reset_postdata();
else : ?>
<p><?php esc_html_e('No portfolio found.', 'textdomain'); ?></p>
<?php
endif; ?>