在 Woocommerce 的某些页面上添加产品 ID 的星级评级

2024-03-06

有没有办法在自定义页面、自定义位置调用特定产品的星级?换句话说,我是否可以添加特定 T 恤的星级,以显示在主页上该 T 恤图片的下方?

我想我需要向编辑器添加某种 php,然后通过某种 html 调用它。我看见这个回答的话题 https://stackoverflow.com/questions/14227121/how-do-you-add-the-star-ratings-for-products-in-woocommerce,其中,其中一个答案似乎对人们有帮助,但是,它只为您提供了必要的 php,所以我不知道如何实际将其放在特定页面上的特定位置。我也不确定这个答案是否解决了在自定义页面上添加星星的可能性,而不仅仅是 woocommerce 页面。

该线程上的另一个答案包含 html。我尝试了一下,我能够加载星星,只不过它们与产品页面上的实际星级评级不符。

我对类似的问题已经存在这一事实表示歉意,但是,它们似乎没有直接满足我的需求,而且我太无能,无法使它们发挥作用:/。


对于特定的产品编号你可以使用一些专用的WC_Product方法:

// Get an instance of the WC_Product Object (from a product ID)
$product = wc_get_product( $product_id);

// The product rating count (number of reviews by rating )
$rating_count = $product->get_rating_counts(); // Multidimensional array

// The product average rating (or how many stars this product has)
$average_rating = $product->get_average_rating();

// Testing Output
echo '<p>Rating average: '.$average_rating.' stars</p>';

显示产品“星星”平均评级:

您可以使用专用功能wc_get_rating_html() https://docs.woocommerce.com/wc-apidocs/source-function-wc_get_rating_html.html#2753-2771 with get_average_rating() https://docs.woocommerce.com/wc-apidocs/source-class-WC_Product.html#669-677 WC_Product方法。所以必要的代码将是:

// Get an instance of the WC_Product Object (from a product ID)
$product = wc_get_product( $product_id);

// The product average rating (or how many stars this product has)
$average_rating = $product->get_average_rating();

// The product stars average rating html formatted.
$average_rating_html = wc_get_rating_html($average_rating);

// Display stars average rating html
echo $average_rating_html;

经过测试并有效。

一个有趣的答案: 评级显示数字而不是星星 https://stackoverflow.com/questions/49378284/rating-is-showing-numbers-instead-of-stars/49426458#49426458


随处显示产品星级的短代码 - 2 个代码版本:

1)最好的方法基于wc_get_rating_html() https://docs.woocommerce.com/wc-apidocs/source-function-wc_get_rating_html.html#2753-2771功能(适用于 Woocommerce 3+):

add_shortcode( 'product_rating', 'display_the_product_rating' );
function display_the_product_rating( $atts ) {
    // Shortcode attributes
    $atts = shortcode_atts( array(
        'id' => '',
    ), $atts, 'product_rating' );

    if ( isset($atts['id']) && $atts['id'] > 0 ):

    // Get an instance of the WC_Product Object
    $product = wc_get_product( $atts['id'] );

    // The product average rating (or how many stars this product has)
    $average = $product->get_average_rating();

    endif;

    if ( isset($average) ) :

    return wc_get_rating_html($average);

    endif;
}

2)老方法(也有效):

add_shortcode( 'product_rating', 'display_the_product_rating' );
function display_the_product_rating( $atts ) {
    // Shortcode attributes
    $atts = shortcode_atts( array(
        'id' => '',
    ), $atts, 'product_rating' );

    if ( isset($atts['id']) && $atts['id'] > 0 ):

    // Get an instance of the WC_Product Object
    $product = wc_get_product( $atts['id'] );

    // The product average rating (or how many stars this product has)
    $average = $product->get_average_rating();

    // HERE the average width
    $average_width = $average * 16 . 'px';

    endif;

    if ( isset($average) ) :

    return '<div class="starwrapper" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
        <span class="star-rating" title="'.sprintf(__('Rated %s out of 5', 'woocommerce'), $average).'">
            <span style="width:'.$average_width.'">
                <span itemprop="ratingValue" class="rating">'.$average.'</span>
            </span>
        </span>
    </div><br clear="all">';

    endif;
}

代码位于活动子主题(或活动主题)的 function.php 文件中。经过测试并有效。


使用示例:

1) 在 WordPress 页面或帖子文本编辑器中(Where 37是产品 ID):

[product_rating id='37']

2)在php代码中:

echo do_shortcode( "[product_rating id='37']" );

3)html标签之间:

<?php echo do_shortcode( "[product_rating id='37']" ); ?>

You will get something like: enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Woocommerce 的某些页面上添加产品 ID 的星级评级 的相关文章

  • Bootstrap

    我正在尝试使用 Bootstrap 构建一个网站 到目前为止 一切都按计划进行 我想要一个固定的导航栏 并且我正在使用内置函数 div class navbar navbar fixed top 这很棒 正是我所需要的 但我希望导航和标题从
  • BeautifulSoup4:选择属性不等于x的元素

    我想做这样的事情 soup find all td attrs class foo 我想找到所有不具有 foo 类的 td 显然上面的方法不起作用 那怎么办呢 BeautifulSoup确实使 汤 变得美丽且易于使用 You 可以传递一个函
  • 在问题内显示内联块文本

    我一直在尝试显示内联块 如果我没有在 div 中添加任何内容 一切都会很好 但是当我这样做时 div 会折叠起来 我不知道确切的原因 任何想法 https jsfiddle net giancorzo ebqoptbd https jsfi
  • 计算帖子中使用 WordPress 短代码的次数

    我有以下 WordPress 短代码功能 function wp shortcode static i 1 return i i return return add shortcode shortcode wp shortcode 这很好用
  • 有没有一种方法可以在没有输入的情况下发送表单值

    假设我有以下表格
  • 重用 PDO 语句 var 会使进程崩溃

    我重用一个变量来存储两个不同的 PDO mysql 语句 stmt dbh gt prepare SELECT stmt gt execute stmt dbh gt prepare UPDATE crash here Error in o
  • Bootstrap 响应式表格在 iOS 设备上无法垂直滚动

    这就是我所拥有的 div class table responsive table class table style background transparent table div 我正在使用以下 bootstrap css 文件 ht
  • POSTed 数组保留其值

    今天 我注意到我的一个 WordPress 安装的行为方式非常奇怪 每当我从仪表板更新帖子时 它的一些额外输入都会保留它们已有的值 所有这些都是多维数组 例如 post php post 123 action 编辑
  • 一次用 \r\n & \n & \r 分解字符串? [复制]

    这个问题在这里已经有答案了 我想按行分割字符串 但我希望它基于所有主要使用的换行符 n r n r 并返回一个包含每一行的数组 您可以使用正则表达式和preg split http php net preg split反而 lines pr
  • 全高全宽 CSS 布局

    我正在寻找一种方法来创建具有 5 个区域的纯 CSS 无 JavaScript 布局 如下所示 H A B C F
  • 如何下载临时文件

    我正在尝试创建一个简短的 PHP 脚本 该脚本采用 JSON 字符串 将其转换为 CSV 格式 使用fputcsv 并使该 CSV 可作为下载的 csv 文件使用 我的想法是使用tmpfile 不用担心 cronjobs 或磁盘空间不足 但
  • 多维数组 PHP 内爆 [重复]

    这个问题在这里已经有答案了 就我的数据结构而言 我有一个 communications 数组 每个 communications id 本身包含三部分信息 id score 和 content 我想内爆这个数组以获得逗号分隔的 id 列表
  • PHP 使用主键和辅助键对多维数组进行排序[重复]

    这个问题在这里已经有答案了 如何按主键和辅助键对多维数组进行排序 例如 假设有以下数组 result array result 0 prio 1 result 0 date 2010 02 28 result 0 post February
  • Yii2 组件将数据传递给 __construct

    我有一个库 我想将其用作组件 在配置文件中我这样设置 components gt superLib gt class gt SuperLib construct gt first second Maybe Yii 2 have proper
  • 如何使用 PHP 将字符串按大写字母分解?

    我有一个字符串 CamelCaseString 我想对大写字母进行explode split 或一些更好的方法来将该字符串分解为单个单词 最简单的方法是什么 解决方案更新 此链接指向一个略有不同的问题 但我认为答案通常比本页当前问题的答案更
  • 如何更改 HTML 文档的“实际编码”?

    我通过 W3C HTML 验证器运行我的网页并收到此错误 编码ascii不是字符的首选名称 使用中的编码 首选名称是 us ascii Charmod C024 第 5 行 第 70 列 内部编码声明 utf 8 不同意 文档的实际编码 u
  • WordPress 子文件夹安装重定向到根目录

    我遇到了一个奇怪的问题 我有我的主站点 mesopinions ca 它是一个 WordPress 安装 我还有几个子域 有自己的 WordPress 安装 无多站点 它与 concours mesopinions ca 子文件夹配合得很好
  • 我应该创建一个块还是一个元素 BEM CSS?

    Bem官网说 创建一个块如果一段代码可以被重用并且它不依赖于正在实现的其他页面组件 创建一个元素如果一段代码在没有父实体 块 的情况下无法单独使用 我有一个 关于部分 块 它的元素依赖于父级并且不能在网站中重复使用 如何根据 bem 这段代
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii

随机推荐

  • 如何在 Spark SQL 中压缩两个数组列

    我有一个 Pandas 数据框 我尝试首先将包含字符串值的两列连接到一个列表中 然后使用 zip 我用 连接列表的每个元素 我的数据集如下 df column 1 abc def ghi df column 2 1 0 2 0 3 0 我想
  • Spring MVC 中的 WebRequest 和 HttpServletRequest

    两者有什么区别 两者都有一个getParameter方法以及setAttribute方法 那么两者的区别在哪里呢 1 一般情况下使用哪一种更好 2 请说明具体的使用场景 The WebRequest 的 javadoc http docs
  • pop eip 指令合法吗?

    我正在参加大学的理论考试 并被问到这个问题 经过一些指令后 esp 增长了 4 eip 增长了 20 该指令可能是什么 我标记了 pop eip 和 ret nasm 32位汇编中是否可以执行pop eip指令 pop eip不是真正的 x
  • 在 Shopify 中更新/删除购物车属性

    我使用购物车属性将每个产品的额外信息添加到购物车 从产品页面 我专门使用购物车属性 over 行项目属性因为客户需要能够稍后按订单编辑此信息 而订单项属性不允许 添加信息工作得很好 当客户决定从购物车中删除商品时 问题就出现了 因为尽管该商
  • 毕达哥拉斯三倍效率

    我需要创建一个函数 它接受整数列表并返回列表中是否存在毕达哥拉斯三元组 例如 3 5 7 4 回报True因为 3 4 5 是毕达哥拉斯三元组 到目前为止我有这个 Python def containsPythagoreanTriple a
  • 如何 boost::bind 到传递并返回 std::string 的托管类的成员?

    我正在尝试做一些非常类似的事情this https stackoverflow com questions 163757 how to use boostbind in c cli to bind a member of a managed
  • 找不到记录器“apscheduler.scheduler”的处理程序

    from apscheduler scheduler import Scheduler import os class ListHref def init self print In ListHref Class self name hre
  • 如何计算 pandas 中每个唯一值的出现次数

    我有一个大的 pandas 数据框 我想计算其中每个唯一值的出现次数 我尝试遵循 但需要花费大量时间和内存使用量 我怎样才能以Pythonic的方式做到这一点 pack for index row in packets iterrows p
  • 动态禁用 jQuery Datepicker 图标

    我对 jQuery 相当陌生 并且我一直在寻找一个像样的免费日期选择器有一段时间了 我对 jQuery UI 的日期选择器非常满意 但我遇到了障碍 我使用它的项目要求我在文本框旁边有一个图标 虽然这相当简单 但我不知道如何动态禁用该图标 有
  • 在 MATLAB 中单击图像时从指针获取索引值

    如何找到点击点的索引并将其添加到数组 列表或向量的末尾 h figure image result locx locy while ishandle h pos get 0 PointerLocation locx end 1 pos 1
  • RuntimeException:在注册表中找不到应用程序“”。

    背景 目标 我尝试在 Windows 7 64 位上安装 Simics Tools for Eclipse 插件 我正在使用 Eclipse Indigo for Java 64 位 为了解决这个问题 我决定在当前设置旁边安装 32 位版本
  • 将 LWJGL java 应用程序放入 jpanel 或 canvas 中

    随着 lwjgl 3 的新更新 类 Display 不存在 我到处搜索 但找不到任何有关如何将所有 lwjgl 应用程序放入 jpanel 或画布或类似内容的内容 我已经想过使用像 twl 这样的 opengl gui 但这会让一切变得更加
  • iOS 6 中的分段控件tintColor

    我有一个有 8 段的分段控件 我可以更改整个控件的默认色调 但是我可以为控件中的每个部分设置不同的颜色吗 我找到了一个在 5 1 中使用的教程 其中有一个调用此方法的新类 void setTintColor UIColor color fo
  • onCreate 流程在 finish() 之后继续

    我想从内部完成一项活动onCreate方法 当我打电话时finish onDestroy 不会立即调用 代码不断流过finish onDestroy 直到之后才被调用onCreate 右大括号 Per the onCreate 描述位于de
  • 展开两个大数据文件并使用data.table应用?

    我正在尝试将函数应用于两个数据集df1 and df2 where df1包含 a b 并且可以有 100 万行长 并且df2包含 x y z 并且可以非常大 从 100 到 gt 10 000 我想应用一个函数foo对两个数据集的每个组合
  • SwiftUI ForEach 'identified(by:)' 已弃用。使用 ForEach(_:id:) 或 List(_:id:)

    在 XCode 11 beta 4 上 以下内容似乎已被弃用 我不知道如何重写它 有谁知道如何使用ForEach id State private var showTargets id 1 state false x 109 28 y 10
  • 永远的nodejs:如何运行我的npm应用程序

    现在我正在运行我的 Node js 应用程序npm start 我想在后台运行它 我发现forever包 但不知道如何运行我通常运行的应用程序npm start 那么我怎样才能使用它来运行它forever 我跟随this SO https
  • jqGrid 有 CDN 吗?

    谁知道有没有CDNjqGrid http www trirand com blog Thanks Here is JQgrid 的 CDN http www jsdelivr com jqgrid 不过 不是最小版本 http www js
  • Laravel 上的 Amazon S3 ERR_INSECURE_RESPONSE

    我在我的子域上使用 Laravel 框架sub example com尝试为我网站的所有图片实现与 Amazon S3 的连接 这是我的存储桶政策 bucket 1 Id Policy Version 2012 10 17 Statemen
  • 在 Woocommerce 的某些页面上添加产品 ID 的星级评级

    有没有办法在自定义页面 自定义位置调用特定产品的星级 换句话说 我是否可以添加特定 T 恤的星级 以显示在主页上该 T 恤图片的下方 我想我需要向编辑器添加某种 php 然后通过某种 html 调用它 我看见这个回答的话题 https st