只做利于SEO的网站,提供网站建设、SEO、网站代运营等服务。服务中心 | 建站流程 | 网站地图

Wordpress首页列表页文章根据权重倒序排序

2024-03-14小猴建站 阅读()相关主题:

有时候做网站建设时,首页需要对某些重点内容进行固定展示,也就是大家常说的“权重排序”或者“自定义排序”。Wordpress的文章权重排序(自定义排序)在很多主题并未开启或设置,需要在主题目录的functions.php,添加如下代码

/*
 * 文章排序
 */
add_action( 'admin_init', 'posts_order' );
function posts_order() {
    add_post_type_support( 'post', 'page-attributes' );
}
add_action('manage_posts_custom_column',  'zm_posts_order_show_columns');
function zm_posts_order_show_columns($name) {
    global $post;
    switch ($name) {
        case 'order':
            $views = $post->menu_order;
            echo $views;
            break;
    }
}

add_filter('manage_posts_columns', 'zm_posts_order_columns');
function zm_posts_order_columns($defaults) {
    $defaults['order'] = '排序';
    return $defaults;
}

文章列表或者内容编辑页可以看到“排序”这个功能,如果没看到可以点击右上角的“显示选项”进行勾选即可。默认的排序是“0”,如果按照正常的排序需要每一个都单独编写,比较麻烦。一般用倒序的排列。

比如调用指定的10篇文章,排序编号可以从100开始,再到99,98以此类推,其他的都不设置。

列表页文章按照权重排序

列表页的调用方式比较多,需要在主循环增加权重排序 orderby=menu_order ,贴出我平时常用的代码

<?php
 global $wp_query;
 $cat_ID = get_query_var('cat');
 //此下代码除了if判断句之外的代码就是我们需要替换的内容   
 $limit = get_option('posts_per_page');   
 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;   
 //下面句中的limit=5这个参数就是我们每个分页所要显示的篇数   
 query_posts('cat=' . $cat_ID . '&showposts=' . $limit=12 . '&orderby=menu_order' . '&paged=' . $paged);   
 $wp_query->is_archive = true; $wp_query->is_home = false;   
 while (have_posts()) : the_post();    
?>
<!--列表循环代码段,略-->
<?php endwhile?>

首页文章按照权重排序

比如调用分类id=17的文章,共调用18个,代码如下

<?php
 query_posts('cat=17&showposts=18&orderby=menu_order');
 while (have_posts()) : the_post(); 
?>
<!--列表循环代码段,略-->
<?php endwhile?>

批量清除排序编号

有时候写多了忘记从哪里开始了,可以选择一次性清空排序编号,把如下代码写到functions.php,清除了记得删除这段代码或者暂时注释

global $wpdb;
$wpdb->query("UPDATE wp_posts SET menu_order = 0 WHERE post_type = 'post'");