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 条评论

像素鱼丸
85196 阅读
139 发布
3 收藏
动态
Mirage 主题 v2.54.0 发布
Botcan 插件 v2.7.1 发布,支持 AI 生成文章特色图片
Mighty 企业主题 v1.10.0 发布
MirageV 主题 v2.6.4 发布
MirageV 主题 v2.6.0 发布
BotV 插件 v1.7.0 发布
FishV 主题 v1.14 发布
MirageV-App 小程序 v1.2.2 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码