这里有新手......我正在摸不着头脑,无法弄清楚如何按照DESC顺序按ID排序这些讨论评论。
此站点上的其他帖子表示2部分解决方案 - 创建两个参数。 (1)排序和(2)命名比较两个元素的函数。 就在那里......我迷失了......但努力去理解。
我认为这是需要调整的代码的主要部分:
<?php $discList = wtis_get_discussions($post->ID);
foreach($discList as $discInfo){
?>
有任何建议吗?
发现它!//Get log details
function wtis_get_discussions($show_id){
global $wpdb;
$table_name = $wpdb->prefix . WTIS_DISC_TBNAME;
$sql = "SELECT * FROM $table_name WHERE show_id=$show_id ORDER BY message_date";
//echo "<br/>Sql: " . $sql;
$wpdb->show_errors = true;
$discussionList = $wpdb->get_results($sql, ARRAY_A);
return $discussionList;
}
现在......真的非常感谢你的帮助。
答案 0 :(得分:0)
如果$discList
是包含ID
字段的评论数组,则可以为您执行此操作:
<?php
function mycmp($a, $b)
{
if ($a['ID'] == $b['ID']) {
return 0;
}
return ($a['ID'] < $b['ID']) ? 1 : -1;
}
usort($discList, "mycmp");
?>
答案 1 :(得分:0)
我会为$order_by = 'message_date'
的函数添加一个可选参数,然后在函数的查询中使用它。这样,您可以默认排序,如有必要,可以执行不同的ORDER BY
和方向。
function wtis_get_discussions($show_id, $order_by = 'message_date'){
global $wpdb;
$table_name = $wpdb->prefix . WTIS_DISC_TBNAME;
$sql = "SELECT * FROM $table_name WHERE show_id=$show_id ORDER BY $order_by";
//echo "<br/>Sql: " . $sql;
$wpdb->show_errors = true;
$discussionList = $wpdb->get_results($sql, ARRAY_A);
return $discussionList;
}
然后:
<?php $discList = wtis_get_discussions($post->ID);
foreach($discList as $discInfo){
?>
<?php $discList = wtis_get_discussions($post->ID, 'message_date DESC');
foreach($discList as $discInfo){
?>
<?php $discList = wtis_get_discussions($post->ID, 'show_id DESC');
foreach($discList as $discInfo){
?>
如果您不是从应用程序外部接受的内容(例如,本身就是不安全或可能无效的内容),则需要小心逃避并清除$order_by
值。