利用$wpdb自定义查询可以调用某年下的月份归档, 例如调用2013年月份归档的代码如下所示。
// Get archive by year global $wpdb, $wp_locale; $year = 2013; $query = "SELECT DISTINCT MONTH(post_date) AS `month` FROM $wpdb->posts WHERE `post_type` = 'post' AND `post_status` = 'publish' AND YEAR(post_date) = $year ORDER BY `month` DESC"; $months = $wpdb->get_results($query); echo '<ul>'; echo '<li><a href="'.get_year_link( $year ).'">'.sprintf('%d', $year).'</a>'; echo '<ul class="month-list">'; foreach( $months as $month ) { $text = sprintf(__('%1$s'), $wp_locale->get_month($month->month)); echo '<li><a href="'.get_month_link( $year, $month->month).'">'.$text.'</a></li>'; } echo '</ul></li></ul>';
输出如下:
<ul> <li><a href="http://yourdomain.com/2013/">2013</a> <ul class="month-list"> <li><a href="http://yourdomain.com/2013/11/">十一月</a></li> <li><a href="http://yourdomain.com/2013/09/">九月</a></li> <li><a href="http://yourdomain.com/2013/08/">八月</a></li> <li><a href="http://yourdomain.com/2013/06/">六月</a></li> <li><a href="http://yourdomain.com/2013/02/">二月</a></li> </ul> </li> </ul>
问一下,这种直接写 MySQL 语句然后来查询,跟使用 WP_Query 类构造的查询,实现相同的需求,有什么差别?会有性能和效率方面的吗?
我对WP Query没有很详细的研究,以下是我目前的理解。
WP Query有固定的参数,要不要用最直接的判断方式就是通过它的参数能否查到你要的数据。
其次,WP Query查询返回的内容比较多,如果你的查询很简单且只需返回一两个字段,那用WP Query会有点杀鸡焉用宰牛刀的感觉。sql查询的信息越多,占用的资源就越多。但WP Query是经过优化的WordPress sql查询,如果是WP Query的经典用法,最好不要自己写。
对,很有道理,谢谢耐心解释!
这个月份是在哪里修改让他格式变成11月 10月这样的数字格式,后台修改时间格式没反应
输出月份名称的代码$text = sprintf(__(‘%1$s’), $wp_locale->get_month($month->month));
你改成$text= $month->month . ‘月’;就行了,硬编码简单。
谢谢谢谢,搞定了