为了账号安全,请及时绑定邮箱和手机立即绑定

WooCommerce:在主页上随机显示一些评论

WooCommerce:在主页上随机显示一些评论

PHP
繁花如伊 2022-01-08 20:19:55
我希望每次有人访问时在我的主页上显示 5 条随机评论。我找到了一些代码来获取所有评论://add get product reviews to homepagefunction get_woo_reviews(){    $count = 0;    $html_r = "";    $title="";    $args = array(        'post_type' => 'product'    );    $comments_query = new WP_Comment_Query;    $comments = $comments_query->query( $args );    foreach($comments as $comment) :        $title = ''.get_the_title( $comment->comment_post_ID ).'';        $html_r = $html_r. "" .$title."";        $html_r = $html_r. "" .$comment->comment_content."";        $html_r = $html_r."Posted By".$comment->comment_author." On ".$comment->comment_date. "";    endforeach;    return $html_r;}add_shortcode('woo_reviews', 'get_woo_reviews');当我将短代码添加[woo_reviews]到此测试页面时,它工作得很好。如何更改此设置以仅获得 5 条随机评论?另外,我现在如何格式化此页面以使其仅包含 5 条评论并能够更改页面上评论的外观(间距、字体等)?
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

添加以下代码片段 -


function get_woo_reviews()

{

    $comments = get_comments(

        array(

            'status'      => 'approve',

            'post_status' => 'publish',

            'post_type'   => 'product',

        )

    ); 

    shuffle($comments);

    $comments = array_slice( $comments, 0, 5 );

    $html = '<ul>';

    foreach( $comments as $comment ) :

        $html .= '<li><h2>'.get_the_title( $comment->comment_post_ID ).'</h2>';

        $html .= '<p>' .$comment->comment_content.'</p>';

        $html .= "<p>Posted By :".$comment->comment_author." On ".$comment->comment_date. "</p></li>";

    endforeach;

    $html .= '</ul>';

    ob_start();

    echo $html;

        $html = ob_get_contents();

    ob_end_clean();


    return $html;

}

add_shortcode('woo_reviews', 'get_woo_reviews');


查看完整回答
反对 回复 2022-01-08
?
呼如林

TA贡献1798条经验 获得超3个赞

有了评论WP_Comment_Query,评论不能乱序。所以你需要使用一个简单的轻量级 SQL 查询,使用专用的 WordPressWPDB类。


在以下代码中,您可以更改样式和 html 结构以获得所需的输出。您还可以使用可用的短代码参数“limit ” (默认设置为5)设置要以随机顺序显示的评论数量:


add_shortcode('woo_reviews', 'get_random_woo_reviews');


function get_random_woo_reviews( $atts ){

    // Shortcode Attributes

    $atts = shortcode_atts( array(

        'limit' => '5', // <== Set to 5 reviews by default

    ), $atts, 'woo_reviews' );


    global $wpdb;


    // The SQL random query on product reviews

    $comments = $wpdb->get_results( $wpdb->prepare("

        SELECT *

        FROM  {$wpdb->prefix}comments c

        INNER JOIN {$wpdb->prefix}posts p ON c.comment_post_ID = p.ID

        WHERE c.comment_type = 'review' AND p.post_status = 'publish'

        ORDER BY RAND() LIMIT %d

    ", intval( esc_attr($atts['limit']) ) ) );


    ob_start(); // Start buffering


    ## CSS applied styles

    ?>

    <style>

        ul.product-reviews, ul.product-reviews li { list-style: none; margin:0; padding:0; line-height: normal;}

        ul.product-reviews li { display:block; max-width: 200px, padding: 10px; display:inline-block; vertical-align: text-top;}

        ul.product-reviews li .title {font-size: 1.2em;}

        ul.product-reviews li .content {max-width: 180px; font-size: 0.9em; margin-bottom: 6px;}

        ul.product-reviews li .author, ul.product-reviews li .date  {display: block; font-size: 0.75em;}

    </style>

    <?php


    ## HTML structure

    ?>

    <ul class="product-reviews"><?php


    foreach ( $comments as $comment ) {

        ?>

        <li>

            <h4 class="title"><?php echo get_the_title( $comment->comment_post_ID ); ?></h4>

            <div class="content"><?php echo $comment->comment_content; ?></div>

            <span class="author"><?php printf( __("Posted By %s") . ' ', '<strong>' . $comment->comment_author . '</strong>' ); ?></span>

            <span class="date"><?php printf( __("On %s"), '<strong>' . date_i18n( 'l jS \of F Y', strtotime( $comment->comment_date) ) . '</strong>' ); ?></span>


        </li>

        <?php

    }

    ?></ul><?php


    return ob_get_clean(); // Return the buffered output

}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。


用法: [woo_reviews]或在 php 中:echo do_shortcode( "[woo_reviews]" );


查看完整回答
反对 回复 2022-01-08
  • 2 回答
  • 0 关注
  • 237 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信