Woocomerce 代码获取产品列表

在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>';
}
?>

说明:

  1. has_post_thumbnail()get_the_post_thumbnail():
    • 用于检查并获取商品的特色图片。
    • 'shop_catalog' 是 WooCommerce 推荐用于商品列表的图片尺寸,你也可以使用 'thumbnail''medium', 或自定义尺寸。
  2. wc_placeholder_img():
    • 如果商品没有设置特色图片,则显示 WooCommerce 默认的占位图。
  3. woocommerce_template_loop_add_to_cart():
    • 这是 WooCommerce 提供的标准函数,用于输出“添加到购物车”按钮。它会根据商品类型(简单商品、可变商品等)自动适配按钮行为。
  4. wc_get_rating_html():
    • 输出商品的星级评分。
  5. HTML 结构:
    • 使用了 <ul class="products"> 和 <li class="product"> 结构,这是 WooCommerce 默认使用的类名,有助于样式继承。
  6. 安全性:
    • 使用 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;
}

 

收藏
评论
打赏
WordPress 外观菜单添加自定义字段
上一篇
Woocomerce 默认页面删除后,使用短代码重新添加
下一篇

0 条评论

像素鱼丸
65793 阅读
105 发布
3 收藏
动态
MirageV 主题 v2.6.4 发布
LandV 企业主题 v2.6.0 发布
BotV 插件 v1.7.0 发布
FishV 主题 v1.14 发布
MirageV 主题 v2.5 正式发布
FishV 主题 v1.21.0 发布
MirageV 主题 v2.6.0 发布
MirageV-App 小程序 v1.2.2 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码