我自己一直在做这方面的工作,几乎没有编码经验。
到目前为止,我发现您可以添加其他值,但需要更新woocommerce模板中的一些文件。在single-product-reviews.php
, 只需重复<p>
到</p>
. 查看我在中添加的位置newrating
星形选择
if ( get_option(\'woocommerce_enable_review_rating\') == \'yes\' ) {
$comment_form[\'comment_field\'] = \'<p class="comment-form-rating"><label for="rating">\' . __( \'Rating\', \'woocommerce\' ) .\'</label><select name="rating" id="rating">
<option value="">\'.__( \'Rate…\', \'woocommerce\' ).\'</option>
<option value="5">\'.__( \'Perfect\', \'woocommerce\' ).\'</option>
<option value="4">\'.__( \'Good\', \'woocommerce\' ).\'</option>
<option value="3">\'.__( \'Average\', \'woocommerce\' ).\'</option>
<option value="2">\'.__( \'Not that bad\', \'woocommerce\' ).\'</option>
<option value="1">\'.__( \'Very Poor\', \'woocommerce\' ).\'</option>
</select></p>
在下面添加新代码:
<p class="comment-form-rating"><label for="newrating">\' . __( \'New Rating\', \'woocommerce\' ) .\'</label><select name="newrating" id="newrating">
<option value="">\'.__( \'Rate…\', \'woocommerce\' ).\'</option>
<option value="5">\'.__( \'Perfect\', \'woocommerce\' ).\'</option>
<option value="4">\'.__( \'Good\', \'woocommerce\' ).\'</option>
<option value="3">\'.__( \'Average\', \'woocommerce\' ).\'</option>
<option value="2">\'.__( \'Not that bad\', \'woocommerce\' ).\'</option>
<option value="1">\'.__( \'Very Poor\', \'woocommerce\' ).\'</option>
</select></p>;
保存后,您应该能够看到新的星形字段,或者可能是一个下拉选择框,因为我们还没有在任何地方将newrating定义为css样式。你可以做你喜欢的事。表单上会显示ratings字段,但在数据库中设置新的comments\\u meta之前,它不会做任何事情。
现在,让我们创建新的comment\\u meta来存储此NewRating字段的数据,该字段将位于/wp-content/plugins/woocommerce/includes/class-wc-comments.php
文件查找此代码:
public function add_comment_rating( $comment_id ) {
if ( isset( $_POST[\'rating\'] ) ) {
if ( ! $_POST[\'rating\'] || $_POST[\'rating\'] > 5 || $_POST[\'rating\'] < 0 )
return;
add_comment_meta( $comment_id, \'rating\', (int) esc_attr( $_POST[\'rating\'] ), true );
$this->clear_transients( $comment_id );
}
并在下面重复此操作:
if ( isset( $_POST[\'newrating\'] ) ) {
if ( ! $_POST[\'newrating\'] || $_POST[\'newrating\'] > 5 || $_POST[\'newrating\'] < 0 )
return;
add_comment_meta( $comment_id, \'newrating\', (int) esc_attr( $_POST[\'newrating\'] ), true );
$this->clear_transients( $comment_id );
}
}
add\\u comment\\u meta函数在Wordpress的comments\\u meta表中创建字段,并将其链接到comment和post ID。现在,您已经在数据库中存储了第二个额定值。
下一步是在显示评论时显示第二个评分。这可以通过修改文件来完成:/single-product/review.php
在顶部附近可以看到的地方添加一行$rating
基本上是复制粘贴:
$newrating = intval( get_comment_meta( $comment->comment_ID, \'newrating\', true ) );
然后在第26行左右看到if语句后,复制并粘贴整个代码,并将变量更改为
newrating
<?php if ( $newrating && get_option( \'woocommerce_enable_review_rating\' ) == \'yes\' ) : ?>
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating" class="star-rating" title="<?php echo sprintf(__( \'Rated %d out of 5\', \'woocommerce\' ), $newrating) ?>">
<span style="width:<?php echo ( intval( get_comment_meta( $GLOBALS[\'comment\']->comment_ID, \'newrating\', true ) ) / 5 ) * 100; ?>%"><strong itemprop="ratingValue"><?php echo intval( get_comment_meta( $GLOBALS[\'comment\']->comment_ID, \'newrating\', true ) ); ?></strong><?php _e( \'out of 5\', \'woocommerce\' ); ?></span>
</div>
<?php endif; ?>
最后一段代码将打印
newrating
如果存在
我仍然在尝试建立一个10个左右的评论类别,然后计算出这些类别的平均值来创建总体评级。到目前为止,我只知道这一点。
请记住,如果升级Woocommerce插件,这一切都会被删除,所以请尽可能使用模板。如果我知道如何将其制作为插件,但我只是WP的初学者。干杯