打开wordpress主题的index.php文件。找到类似下面的这段话:
创新互联建站服务项目包括善左网站建设、善左网站制作、善左网页制作以及善左网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,善左网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到善左省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
while(have_posts()) {
这个就是用来显示你博客文章的循环语句。把它修改成下面的样子:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args=array(
'orderby' = 基于排序的对象,
'paged' = $paged,
'order' = 'DESC'
);
query_posts($args);
while(have_posts()) {
其中,“基于排序的对象”可以是文章的任何属性,比方:”id”, “title”, “date”。
通过这种方法,你可以修改文章排序的依据。不过依旧不能完全自定义文章排序。要完全自定义文章排序,我们要用到wordpress的另一个功能:meta data。
编辑文章时,你可能在文章编辑Widget下面看到像下面这样Widget:
meta
如果没有,点击你编辑界面右上角的“显示选项”,选中“自定义栏目”。
然后,为每一篇文章添加一个meta data,key可以自己定义,比方post_order,meta的值则是你文章排序的依据。
类似的,在index.php中替换如下代码,只是把orderby改成了你的meta_key,同时添加一项meta_key。如下:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args=array(
'meta_key' = 'post_order',
'orderby' = 'meta_value',
'paged' = $paged,
'order' = 'DESC'
);
query_posts($args);
while (have_posts()) {
这样,你就可以依据自己定义的meta_data对文章进行排序了。
最后要说的是,这样方法不仅试用于首页,也适用于标签页、分类页等存档页面。修改的放法一样。读者可以自己尝试一下。更多问题到问题求助《》
你可以向posts_orderby这个hooks添加内容。位于wp-includes/query.php
中 3206行。
如:
add_filter( 'posts_orderby', 'wpdit_custom_orderby' );
function wpdit_custom_orderby( $orderby ) {
$orderby = "ID ASC";
return $orderby;
}
上面的代码是改变了全局的排序方式。
如果仅想在需要的地方设定不同的排序,就只要改你的代码:
$args = array(
'cat' = get_option('cx_cat_s'),
'post__not_in' = $sticky,
'paged' = $paged,
'orderby' = 'ID', //这样插入就可以了
'order' = 'ASC'
);
正好我也要用到这个功能,把下面代码插入到function.php中
//修改默认的WordPress query函数
function wp37_com_custom_query( $query ) {
// 确保只修改主查询
if( $query-is_main_query() ! is_admin() ) {
// 在首页和分类页面进行,
if($query-is_home() || $query-is_category() ){
$query-set( 'orderby', 'modified' );
$query-set( 'order', 'DESC' );
// 由于某些插件或主题已修改默认查询,此代码有时可能无法按预期工作。使用supress_filters参数解决这个问题
$query-set( 'suppress_filters', 'true' );
}
}
}
add_action( 'pre_get_posts', 'wp37_com_custom_query' );
详情查看