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

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

发表评论

注册不是必须的

像素鱼丸
149 文章
0 评论
4 喜欢
最新文章

Mirage 主题 v2.93.0 发布

更新内容: refactor 移除图片高宽比开关 refactor 移除全局的TOC生成开关 refactor 优化 header.php 中的seo模块和样式覆盖 feat 主题启用的时候,移除非当前主题注册的小工具 fix 修复分类小工具的bug feat 管理员打开后台,检查最当前设置首页布局的模块,如果缺少最新模块,就添加到隐藏模块列表中 fix 优化链接卡片样式 fix 优化热门文章样式 […]

如何使用 WordPress Setting API

使用 WordPress 的 Setting API 是在插件或主题中创建和管理设置页面的标准方式。它提供了一种结构化、安全的方式来保存和获取用户配置的选项。 ✅ 一、Setting API 简介 WordPress 的 Setting API 允许你: 创建设置页面(Settings Page) 注册设置字段(Settings Field) 验证和保存设置数据 使用表单提交来更新设置 ✅ 二、基 […]

详解 WordPress 的评论设置

好的,我们来详细梳理并总结 WordPress 中关于文章评论的两个核心控制层级:全局设置和单篇设置。理解这两者的关系(优先级)是管理网站评论的关键。 1. 全局设置 (Global Settings) —— 网站的“默认规则” 这是整个网站评论系统的总开关和默认行为准则。它决定了新发布的文章默认是什么样子的。 位置:WordPress 后台仪表盘 -> 设置 (Settings) -> […]

wp_handle_comment_submission 函数

wp_handle_comment_submission() 是 WordPress 中用于处理评论提交的核心函数之一。它通常在用户提交评论时被调用,负责验证和处理评论数据,并最终将评论插入到数据库中。 ✅ 函数作用 wp_handle_comment_submission() 的主要功能是: 验证用户提交的评论数据(如评论内容、用户名、邮箱等) 检查是否为垃圾评论(通过 Akismet 或其他过 […]
生成中...
扫描二维码
扫描二维码
用户登录