纯代码给wordpress网站后台搜索曾加ID搜索功能

为WordPress后台列表添加ID精确搜索功能

方法一:为WordPress后台列表添加ID精确搜索功能

以下是专为WordPress后台添加ID搜索功能的完整插件代码,可直接添加到主题的functions.php文件中或创建为自定义插件:wp-admin-id-search.php


<?php
/**
 * Plugin Name: WP Admin ID Search
 * Description: 为WordPress后台列表添加ID精确搜索功能
 * Version: 1.0
 * Author: Your Name
 */

class Admin_ID_Search {

    public function __construct() {
        add_action('admin_init', [$this, 'add_id_search_support']);
    }

    // 为所有文章类型添加ID搜索
    public function add_id_search_support() {
        foreach (get_post_types(['show_ui' => true], 'objects') as $post_type) {
            add_filter("manage_{$post_type->name}_posts_columns", [$this, 'add_id_column']);
            add_action("manage_{$post_type->name}_posts_custom_column", [$this, 'show_id_column'], 10, 2);
            add_filter("parse_query", [$this, 'handle_id_search']);
        }
    }

    // 添加ID列
    public function add_id_column($columns) {
        return array_merge(['id' => 'ID'], $columns);
    }

    // 显示ID列内容
    public function show_id_column($column, $post_id) {
        if ($column === 'id') {
            echo $post_id;
        }
    }

    // 处理ID搜索
    public function handle_id_search($query) {
        global $pagenow;
        
        if (is_admin() && $pagenow === 'edit.php' && isset($_GET['s'])) {
            $search = trim($_GET['s']);
            
            if (is_numeric($search)) {
                $query->query_vars['post__in'] = [intval($search)];
                $query->query_vars['s'] = '';
            }
        }
        return $query;
    }
}

new Admin_ID_Search();

该插件实现以下功能:

  1. 在后台所有文章类型列表添加ID列显示
  2. 支持在默认搜索框直接输入数字ID进行精确查询
  3. 自动识别纯数字搜索并转换为ID查询
  4. 不影响原有关键词搜索功能
  5. 兼容所有自定义文章类型

安装方法:

  1. 将代码保存为wp-admin-id-search.php文件,上传到/wp-content/plugins/目录后激活即可。使用时在后台列表搜索框直接输入文章/页面ID数字即可精准定位。( 安装时会提示2个错误 )
  2. 以上是专为WordPress后台添加ID搜索功能的完整插件代码,可直接添加到主题的 functions.php

方法二:在方法一的基础下修改WordPress后台列表中ID列的宽度为100像素(分类、标签、评论、用户、媒体没有显示 ID)


<?php
/**
 * Plugin Name: WP Admin ID Search
 * Description: 为WordPress后台列表添加ID精确搜索功能
 * Version: 1.0
 * Author: Your Name
 */

class Admin_ID_Search {

    public function __construct() {
        add_action('admin_init', [$this, 'add_id_search_support']);
        add_action('admin_head', [$this, 'add_admin_styles']); // 添加样式
    }

    // 添加自定义样式
    public function add_admin_styles() {
        echo '<style>
            .fixed .column-id {
                width: 100px;
            }
        </style>';
    }

    // 为所有文章类型添加ID搜索
    public function add_id_search_support() {
        foreach (get_post_types(['show_ui' => true], 'objects') as $post_type) {
            add_filter("manage_{$post_type->name}_posts_columns", [$this, 'add_id_column']);
            add_action("manage_{$post_type->name}_posts_custom_column", [$this, 'show_id_column'], 10, 2);
            add_filter("parse_query", [$this, 'handle_id_search']);
        }
    }

    // 添加ID列
    public function add_id_column($columns) {
        return array_merge(['id' => 'ID'], $columns);
    }

    // 显示ID列内容
    public function show_id_column($column, $post_id) {
        if ($column === 'id') {
            echo $post_id;
        }
    }

    // 处理ID搜索
    public function handle_id_search($query) {
        global $pagenow;
        
        if (is_admin() && $pagenow === 'edit.php' && isset($_GET['s'])) {
            $search = trim($_GET['s']);
            
            if (is_numeric($search)) {
                $query->query_vars['post__in'] = [intval($search)];
                $query->query_vars['s'] = '';
            }
        }
        return $query;
    }
}

new Admin_ID_Search();

方法三:后台列表添加文章ID精确搜索(只有文章ID精确搜索)

文章、分类、标签、评论、用户、媒体都有显示 ID,并设置ID列的宽度固定为60像素。


<?php
/**
 * Plugin Name: WP Admin ID Search
 * Description: 为WordPress后台列表添加ID精确搜索功能
 * Version: 1.2
 * Author: Your Name
 */

class Admin_ID_Search {

    public function __construct() {
        add_action('admin_init', [$this, 'add_id_search_support']);
        add_action('admin_head', [$this, 'add_admin_styles']);
        add_action('admin_init', [$this, 'add_taxonomy_id_columns']);
        add_action('admin_init', [$this, 'add_comments_id_column']);
        add_action('admin_init', [$this, 'add_users_id_column']);
        add_action('admin_init', [$this, 'add_media_id_column']);
    }

    // 添加自定义样式
    public function add_admin_styles() {
        echo '<style>
            .fixed .column-id, 
            .fixed .column-term_id,
            .fixed .column-comment_id,
            .fixed .column-user_id,
            .fixed .column-media_id {
                width: 60px !important;
            }
        </style>';
    }

    // 为所有文章类型添加ID搜索
    public function add_id_search_support() {
        foreach (get_post_types(['show_ui' => true], 'objects') as $post_type) {
            add_filter("manage_{$post_type->name}_posts_columns", [$this, 'add_id_column']);
            add_action("manage_{$post_type->name}_posts_custom_column", [$this, 'show_id_column'], 10, 2);
            add_filter("parse_query", [$this, 'handle_id_search']);
        }
    }

    // 为分类和标签添加ID列
    public function add_taxonomy_id_columns() {
        $taxonomies = get_taxonomies(['show_ui' => true], 'objects');
        foreach ($taxonomies as $taxonomy) {
            add_filter("manage_edit-{$taxonomy->name}_columns", [$this, 'add_term_id_column']);
            add_filter("manage_{$taxonomy->name}_custom_column", [$this, 'show_term_id_column'], 10, 3);
        }
    }

    // 为评论添加ID列
    public function add_comments_id_column() {
        add_filter('manage_edit-comments_columns', [$this, 'add_comment_id_column']);
        add_action('manage_comments_custom_column', [$this, 'show_comment_id_column'], 10, 2);
    }

    // 为用户添加ID列
    public function add_users_id_column() {
        add_filter('manage_users_columns', [$this, 'add_user_id_column']);
        add_action('manage_users_custom_column', [$this, 'show_user_id_column'], 10, 3);
    }

    // 为媒体库添加ID列
    public function add_media_id_column() {
        add_filter('manage_media_columns', [$this, 'add_media_id_column_callback']);
        add_action('manage_media_custom_column', [$this, 'show_media_id_column'], 10, 2);
    }

    // 以下是各列的添加和显示方法
    public function add_id_column($columns) {
        return array_merge(['id' => 'ID'], $columns);
    }

    public function show_id_column($column, $post_id) {
        if ($column === 'id') echo $post_id;
    }

    public function add_term_id_column($columns) {
        return array_merge(['term_id' => 'ID'], $columns);
    }

    public function show_term_id_column($content, $column_name, $term_id) {
        if ($column_name === 'term_id') echo $term_id;
        return $content;
    }

    public function add_comment_id_column($columns) {
        return array_merge(['comment_id' => 'ID'], $columns);
    }

    public function show_comment_id_column($column, $comment_id) {
        if ($column === 'comment_id') echo $comment_id;
    }

    public function add_user_id_column($columns) {
        return array_merge(['user_id' => 'ID'], $columns);
    }

    public function show_user_id_column($value, $column_name, $user_id) {
        if ($column_name === 'user_id') return $user_id;
        return $value;
    }

    public function add_media_id_column_callback($columns) {
        return array_merge(['media_id' => 'ID'], $columns);
    }

    public function show_media_id_column($column, $attachment_id) {
        if ($column === 'media_id') echo $attachment_id;
    }

    // 处理ID搜索
    public function handle_id_search($query) {
        global $pagenow;
        
        if (is_admin() && $pagenow === 'edit.php' && isset($_GET['s'])) {
            $search = trim($_GET['s']);
            
            if (is_numeric($search)) {
                $query->query_vars['post__in'] = [intval($search)];
                $query->query_vars['s'] = '';
            }
        }
        return $query;
    }
}

new Admin_ID_Search();