WordPress 后台文章列表增加文章 ID 增强搜索功能

由于本章的文章已超过4K,最初的固定连接设置的是 %post_id% 编辑文章,需要根据文章 ID 在后台快速搜索。增加文章ID可以通过插件解决,还需要增强搜索功能,可通过ID快速搜索。现在不通插件一次解决两个问题。

解决方法

1、增强后台文章列表搜索功能,支持多个ID一起搜索。举例:1202,18495 ID之间用英文逗号分隔。在主题的 functions.php 中添加以下代码:

/* 增强WordPress搜索功能,支持通过文章ID搜索 */
// 修改搜索查询,支持ID搜索
add_filter('posts_search', 'search_by_post_id', 10, 2);
function search_by_post_id($search, $wp_query) {
    global $wpdb;
    
    // 只处理主查询和搜索请求
    if (!$wp_query->is_main_query() || !$wp_query->is_search()) {
        return $search;
    }
    
    $search_term = trim($wp_query->get('s'));
    
    // 检查搜索词是否为单个数字ID
    if (ctype_digit($search_term)) {
        $post_id = (int) $search_term;
        $search = $wpdb->prepare(
            " AND ({$wpdb->posts}.ID = %d OR {$wpdb->posts}.post_title LIKE %s)",
            $post_id,
            '%' . $wpdb->esc_like($search_term) . '%'
        );
    }
    // 检查搜索词是否为多个逗号分隔的ID
    elseif (preg_match('/^\d+(,\d+)*$/', $search_term)) {
        $ids = array_map('intval', explode(',', $search_term));
        $id_list = implode(',', $ids);
        $search = $wpdb->prepare(
            " AND ({$wpdb->posts}.ID IN ({$id_list}) OR {$wpdb->posts}.post_title LIKE %s)",
            '%' . $wpdb->esc_like($search_term) . '%'
        );
    }
    
    return $search;
}
Wordpress 后台文章列表增加文章 ID 增强搜索功能

2、文章列表增加ID,并将ID排在最前面居中显示,可根据自己需求设置ID列宽。在主题的 functions.php 中添加以下代码:

/* 在WordPress后台文章列表添加ID列并显示在最前面*/
// 添加ID列标题并调整位置
add_filter('manage_posts_columns', 'add_post_id_column', 5);
function add_post_id_column($columns) {
    $new_columns = array('post_id' => 'ID');
    return array_merge($new_columns, $columns);
}

// 显示ID列内容
add_action('manage_posts_custom_column', 'display_post_id_column', 10, 2);
function display_post_id_column($column, $post_id) {
    if ($column === 'post_id') {
        echo $post_id;
    }
}

// 让ID列可排序
add_filter('manage_edit-post_sortable_columns', 'make_post_id_sortable');
function make_post_id_sortable($sortable_columns) {
    $sortable_columns['post_id'] = 'ID';
    return $sortable_columns;
}

// 对ID列进行排序处理
add_action('pre_get_posts', 'sort_posts_by_id');
function sort_posts_by_id($query) {
    if (!is_admin() || !$query->is_main_query()) {
        return;
    }

    $orderby = $query->get('orderby');
    if ('ID' === $orderby) {
        $query->set('orderby', 'ID');
    }
}

// 设置ID列的宽度(可选)
add_action('admin_head-edit.php', 'custom_post_id_column_width');
function custom_post_id_column_width() {
    echo '<style>
        .column-post_id { width: 100px; text-align: center; }
    </style>';
}
Wordpress 后台文章列表增加文章 ID 增强搜索功能
(0)
公众号 微信扫一扫关注公众号 微信扫一扫关注公众号
上一篇 4天前
下一篇 2021年12月22日 10:58

相关推荐

扫码领红包