wordpress - 如何在 woocommerce 中编辑评级输出以删除文本以及如何在不使用 css 的情况下删除星星
问题描述
我是编码和 wordpress/woocommerce 的新手,正在尝试找到一种简单的方法来编辑wc_get_rating_html
.
目前它输出以下内容:
function wc_get_rating_html( $rating ) {
if ( $rating > 0 ) {
$rating_html = '<div class="star-rating" title="' . sprintf( esc_attr__( 'Rated %s out of 5', 'woocommerce' ), $rating ) . '">';
$rating_html .= '<span style="width:' . ( ( $rating / 5 ) * 100 ) . '%"><strong class="rating">' . $rating . '</strong> ' . esc_html__( 'out of 5', 'woocommerce' ) . '</span>';
$rating_html .= '</div>';
} else {
$rating_html = '';
}
return apply_filters( 'woocommerce_product_get_rating_html', $rating_html, $rating );
}
我只是想输出星级而不是之前和之后的文本。关于如何执行此操作的任何建议,因为我无法编辑模板文件。谢谢
解决方案
Wordpress 使用过滤器,允许您替换和/或修改过滤器处理的输出。这是该wc_get_rating_html
功能的完整块:
function wc_get_rating_html( $rating, $count = 0 ) {
$html = '';
if ( 0 < $rating ) {
/* translators: %s: rating */
$label = sprintf( __( 'Rated %s out of 5', 'woocommerce' ), $rating );
$html = '<div class="star-rating" role="img" aria-label="' . esc_attr( $label ) . '">' . wc_get_star_rating_html( $rating, $count ) . '</div>';
}
return apply_filters( 'woocommerce_product_get_rating_html', $html, $rating, $count );
}
在您的示例中,woocommerce_product_get_rating_html
是过滤器名称并采用三个参数:
$rating_html
代表用户看到的输出
$rating
这是数字等级
$count
这是评分的总数。
如果您希望替换输出,您需要woocommerce_product_get_rating_html
使用一个返回修改后内容的函数连接到过滤器。如果您不熟悉在 Wordpress 中使用钩子和过滤器,您肯定需要查看钩子和过滤器以及它们在 Wordpress 中的工作方式。
推荐阅读
- c# - jquery-ui.min.js 加载时间过长
- asp.net-core - Hangfire 找不到已注册的服务
- postgresql - 将 InfluxDB 查询转换为带有 grafana 变量的 Postgres 查询
- c - 取消引用指向不完整类型'struct tcphdr'的指针?
- django - 无法发送电子邮件覆盖创建方法 django rest 框架
- reporting-services - 如果日期大于或等于预期结束日期列之前的 7 天,则表达式更改文本框的填充颜色
- django - Django用除法注释和聚合
- python - 向张量添加新维度,会修改其数据吗?
- flutter - 为什么 RaisedButton 和 TextField 不继承父 Container 小部件的尺寸
- go - 如何在云函数中提供静态文件,如 swagger ui