在WordPress中,如果你使用的是WooCommerce插件来管理产品,你可以通过WooCommerce提供的函数和WordPress的查询功能来获取产品列表。下面是一个简单的示例代码,展示如何获取并显示产品列表:
// 确保在适当的地方添加此代码,例如在你的主题文件中或通过创建一个自定义插件
if (function_exists('wc')) {
// 创建一个新的WP_Query对象来获取产品
$args = array(
'post_type' => 'product', // 设置文章类型为产品
'posts_per_page' => 10, // 显示的产品数量
);
$loop = new WP_Query($args);
if ($loop->have_posts()) {
while ($loop->have_posts()) : $loop->the_post();
global $product;
// 输出产品标题和链接
echo '<a href="' . get_permalink() . '">' . get_the_title() . '</a>';
// 如果需要,还可以输出其他产品信息,如价格等
echo $product->get_price_html();
endwhile;
} else {
echo __('没有找到产品');
}
// 重置文章数据
wp_reset_postdata();
} else {
echo 'WooCommerce插件未激活';
}
这段代码可以简单的列出商品列表,然后通过 WP_Query 的参数控制列表。下面是一个更详细的例子:
<?php
// 确保 WooCommerce 已激活
if ( ! function_exists( 'WC' ) ) {
return;
}
// 设置查询参数
$args = array(
'post_type' => 'product', // 查询产品类型
'posts_per_page' => 10, // 每页显示的产品数量
'post_status' => 'publish', // 只显示已发布的商品
);
// 创建 WP_Query 对象
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
echo '<div class="woocommerce">'; // 包裹整个商品列表的容器
echo '<ul class="products">'; // 商品列表容器
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
// 获取商品信息
$title = get_the_title(); // 商品标题
$permalink = get_permalink(); // 商品链接
$price_html = $product->get_price_html(); // 商品价格(含格式)
$rating_html = wc_get_rating_html( $product->get_average_rating() ); // 评分 HTML
$stock_status = $product->is_in_stock() ? '有货' : '缺货'; // 库存状态
// 获取特色图片
if ( has_post_thumbnail() ) {
$image = get_the_post_thumbnail( $loop->post->ID, 'shop_catalog' ); // 使用 WooCommerce 推荐的缩略图尺寸
} else {
$image = wc_placeholder_img( 'shop_catalog' ); // 如果没有特色图片,则显示占位符
}
// 开始输出每个商品的 HTML
echo '<li class="product type-product">';
// 商品图片链接
echo '<a href="' . esc_url( $permalink ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
echo $image;
echo '</a>';
// 商品标题
echo '<h2 class="woocommerce-loop-product__title"><a href="' . esc_url( $permalink ) . '">' . esc_html( $title ) . '</a></h2>';
// 显示评分(如果有)
if ( $rating_html ) {
echo '<div class="star-rating">' . $rating_html . '</div>';
}
// 显示价格
echo '<span class="price">' . $price_html . '</span>';
// 显示库存状态
echo '<p class="stock ' . ( $product->is_in_stock() ? 'in-stock' : 'out-of-stock' ) . '">' . esc_html( $stock_status ) . '</p>';
// 购买按钮(添加到购物车)
woocommerce_template_loop_add_to_cart(); // 使用 WooCommerce 默认的“添加到购物车”按钮模板
echo '</li>';
endwhile;
echo '</ul>';
echo '</div>';
// 重置文章数据
wp_reset_postdata();
} else {
echo '<p>' . __( '暂无商品可显示。', 'your-text-domain' ) . '</p>';
}
?>
说明:
has_post_thumbnail()
和get_the_post_thumbnail()
:- 用于检查并获取商品的特色图片。
'shop_catalog'
是 WooCommerce 推荐用于商品列表的图片尺寸,你也可以使用'thumbnail'
,'medium'
, 或自定义尺寸。
wc_placeholder_img()
:- 如果商品没有设置特色图片,则显示 WooCommerce 默认的占位图。
woocommerce_template_loop_add_to_cart()
:- 这是 WooCommerce 提供的标准函数,用于输出“添加到购物车”按钮。它会根据商品类型(简单商品、可变商品等)自动适配按钮行为。
wc_get_rating_html()
:- 输出商品的星级评分。
- HTML 结构:
- 使用了
<ul class="products">
和<li class="product">
结构,这是 WooCommerce 默认使用的类名,有助于样式继承。
- 使用了
- 安全性:
- 使用
esc_url()
和esc_html()
来转义输出内容,防止 XSS 攻击。
- 使用
自定义样式建议
你可以将以下 CSS 添加到主题的 style.css
中,以美化商品列表:
.woocommerce ul.products {
list-style: none;
padding: 0;
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.woocommerce ul.products li.product {
border: 1px solid #ddd;
padding: 15px;
text-align: center;
width: 200px;
}
.woocommerce ul.products li.product img {
max-width: 100%;
height: auto;
}
.woocommerce ul.products li.product .price {
font-weight: bold;
color: #d40000;
}
.woocommerce ul.products li.product .button {
margin-top: 10px;
}
0 条评论