当前位置: 首页 > 面试题库 >

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

娄丁雨
2023-03-14
问题内容

我希望每次有人访问时,我的主页上都会出现5条随机评论。

我找到了一些代码来获取所有评论:

//add get product reviews to homepage

function 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条评论,并且能够更改页面上评论的外观(间距,字体等)?


问题答案:

使用评论时WP_Comment_Query评论不能随意排列
。因此,您需要使用专用的WordPressWPDB类来使用简单的轻量级SQL查询。

在下面的代码中,您可以更改样式和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]" );



 类似资料:
  • 我想在“销售”和“常规”价格下显示每个产品的总储蓄,就像下面的图片一样:https://ibb.co/T8BxH9z.储蓄金额是计算出来的,它是可见的,但由于某种原因,我的货币不可见。所以,我想显示它像这个例子:"Ušteda: 2291,87 kn",现在,只有金额显示。网站链接:https://shop.mirakul.com.hr/. 这是我正在使用的代码。你知道为什么货币不见了吗? 提前感

  • 问题内容: 我想在首页上显示客户评论的总数,我尝试了这种方法: 但是没有按我想要的那样工作!例如,我有4条评论,此代码仅显示(1条评论),而不是(4条评论)。 关于平均水平,我对主页上的工作方式一无所知,我只知道如何使用下面的代码在单个产品页面上实现此功能: 但是,此代码仅适用于单个产品的平均评分,而不是我想要的所有评论的全球平均值。 任何帮助表示赞赏。 问题答案: 更新 (在没有评论的情况下避免

  • 我尝试在viewDidLoad()中运行以下代码,如果我从Xcode构建并运行它,该应用程序可以正确显示评级提示,但如果我在iPhone上手动运行该应用程序,那么评级提示就不显示了。这是为什么? 我的系统是:iOS 14.4.1,Xcode 12.4 另外,如果我只是将这行代码放在viewDidLoad()中,那么我就没有这个问题:

  • 我试图显示一个随机记录从我的表,但没有运气,这是我一直以来。这是用PHP编写的 想知道这是否是一个明显的错误吗?我已经连接到数据库了。 JB的

  • 我是Javascript新手——每次刷新页面时,我都会尝试以不同的顺序重新加载页面上的图像——这样每次访问都会有一个新的网站安排。 类似于这里所做的:pauljung.co.uk 这里使用的函数是MathRandom,它可以调整图像的大小,并在加载时将图像放置在不同的位置。但是,我想知道如何准确地将图像调用到页面的HTML主体上? 我尝试在主体中放置一个间隔gif,并将其链接到id=picture

  • 我想为我的一些产品显示不同的缩略图,如果它们出现在特定类别中。 我已经从特定类别中删除了当前的缩略图,我正在使用一个自定义字段为我要替换的产品提取新的缩略图,这非常有效。然而,当我尝试调用剩余产品的正常缩略图时,它不起作用-有什么想法吗?