我有三个部分:
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日期到当前日期?
最合适的回答,由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 {