Woocomerce 代码获取产品列表
像素鱼丸
08-20
333

在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 默认页面删除后,使用短代码重新添加
下一篇

发表评论

注册不是必须的

像素鱼丸
156 文章
1 评论
4 喜欢
最新文章

退款和取消订单接口要不要合并

很多开发者在设计初期的常见思路。将“取消”和“退款”分开,从功能上看似乎很清晰,但在实际的复杂业务场景中,这种设计可能会带来一些问题。 更主流和推荐的设计是提供一个统一的“申请取消订单”接口,由后端服务根据订单的当前状态,自动路由到不同的处理逻辑。  为什么统一接口是更好的选择? 前端逻辑简化: 对于用户而言,他的诉求只有一个:“我不想要这个订单了”。无论订单是否支付,他在前端点击的都是“取消订单 […]

Mirage 主题 v3.7.0 发布

Mirage 主题 v3.7.0 发布 feat 增加拉黑用户功能 feat 移动端向下滑动时隐藏header,向上滑动时显示header 下载地址 https://gitee.com/vthemecn/mirage/releases/tag/v3.7.0 https://github.com/vthemecn/mirage/releases/tag/v3.7.0 新增功能截图

Mirage 主题 v3.6.0 发布

下载地址 Gitee下载地址:https://gitee.com/vthemecn/mirage/releases/tag/v3.6.0 Github下载地址:https://github.com/vthemecn/mirage/releases/tag/v3.6.0 更新内容 – feat 新增导航菜单悬浮顶部切换设置 – feat 增加隐藏登录按钮的设置 – feat 增加在前台显示登录按钮的 […]
生成中...
扫描二维码
扫描二维码