如果META_KEY的值=6|将wp_posts.post_date更改为当前日期

时间:2013-09-27 作者:Oscar

我有三个部分:

1-新岗位2趋势岗位3热点岗位

我使用的是投票插件,我对每个部分都进行了如下排序:

新职位:

$args = array(
  \'meta_query\'=> array(
    array(
      \'key\' => \'_wti_like_count\',
      \'compare\' => \'<=\',
      \'value\' => 5,
      \'type\' => \'numeric\',
  \'posts_per_page\' => 5
) ) );
query_posts( $args );
其结果是:

选择SQL\\u CALC\\u FOUND\\u ROWS wp\\u posts。*从wp\\u posts加入wp\\u postmeta ON(wp\\u posts.ID=wp\\u postmeta.post\\u ID),其中1=1和wp\\u posts。post\\u类型=“post”和(wp\\u posts.post\\u status=“publish”或wp\\u posts.post\\u status=“private”)以及wp\\u postmeta。meta\\u键=“\\u wti\\u like\\u count”和wp\\u postmeta。meta\\u值<;=\'5’按wp\\U帖子分组。由wp_发布的ID命令。post\\u日期描述限制0,100

在此部分中,仅显示0到5票的帖子。

一旦达到6票。。它进入趋势部分->

$args = array(
  \'meta_query\'=> array(
    array(
      \'key\' => \'_wti_like_count\',
      \'compare\' => \'>=\',
      \'value\' => 5,
      \'type\' => \'numeric\',
  \'posts_per_page\' => 5
) ) );
query_posts( $args );

在5个或5个以上的帖子中。。。正在显示等等。。。

我的问题是我通过wp\\U帖子订购它们。post\\u日期,一旦一个旧帖子比一个新帖子获得更多的投票,它就会从新闻帖子转到趋势帖子,但它不会显示在部分的顶部。。。下面是。。

我不能做这样的事。。

$args = array(
  \'meta_query\'=> array(
    array(
      \'key\' => \'_wti_like_count\',
      \'compare\' => \'<=\',
      \'value\' => 5,
      \'type\' => \'numeric\',
  \'posts_per_page\' => 5
) ) );
query_posts( $args );
当它达到6票时。。。我希望能够更新wp\\U帖子。post\\u date to current,以便每次旧帖子获得5票以上时。。它首先显示在趋势部分。。。不低于

类似于如果“value”=6更新wp\\u帖子。post\\u日期到当前日期?

1 个回复
最合适的回答,由SO网友:epilektric 整理而成

无法使用查询更新发布日期,因为当发布计数等于6时,更新会重复运行。每次调用查询时,都会更新发布日期。

但是,当单击like按钮并且满足条件时,您可以修改插件以更新发布日期。

这是在帖子数量等于6时更新帖子日期所需的基本代码。

if ( GetWtiLikeCount($post_id) == 6 ) {
    //update date
    $time = current_time(\'mysql\');
    wp_update_post(
        array (
            \'ID\'            => $post_id,
            \'post_date\'     => $time,
            \'post_date_gmt\' => get_gmt_from_date( $time )
        )
    );
}
您需要将代码添加到wti_like_post_ajax.php 以便在单击like按钮时触发。在这里,它与周围的一些代码结合在一起。

if ($can_vote) {
    $current_user = wp_get_current_user();
    $user_id = (int)$current_user->ID;

    if ($task == "like") {
        if ($has_already_voted) {
            $query = "UPDATE {$wpdb->prefix}wti_like_post SET ";
            $query .= "value = value + 1, ";
            $query .= "date_time = \'" . date(\'Y-m-d H:i:s\') . "\' ";
            $query .= "WHERE post_id = \'" . $post_id . "\' AND ";
            $query .= "ip = \'$ip\'";
        } else {            
            $query = "INSERT INTO {$wpdb->prefix}wti_like_post SET ";
            $query .= "post_id = \'" . $post_id . "\', ";
            $query .= "value = \'1\', ";
            $query .= "date_time = \'" . date(\'Y-m-d H:i:s\') . "\', ";
            $query .= "ip = \'$ip\'";
        }

        if ( GetWtiLikeCount($post_id) == 6 ) {
            //update date
            $time = current_time(\'mysql\');
            wp_update_post(
                array (
                    \'ID\'            => $post_id,
                    \'post_date\'     => $time,
                    \'post_date_gmt\' => get_gmt_from_date( $time )
                )
            );
        }

    } else {

结束

相关推荐

Sort post's categories by ID

我有一个博客,其中几个帖子的类别必须先输出,然后再输出其他类别。与其他类别相比,这些类别的ID较低。我正在使用get_the_category_list 但它并没有像我预期的那样工作。这让我很困惑,因为我记得有一个主题做得很好。有人能给我指出正确的方向吗?谢谢<?php get_the_category_list( array( \'orderby\' => \'ID\', \'order\' => \'ASC\' ) ); ?>&