七夏 发表于 2024-11-6 17:03:33

为WordPress后台页面和文章列表添加缩略图

![图片](https://www.3bbs.cn/index-diy/img.php?url=https://mmbiz.qpic.cn/sz_mmbiz_png/AicEIek12zX2c4icCeO8LBIDicWxHoewRZLic4LJbric1icY7RwmxuhLZ9kI0GmqMiae7Np43cxGGFbgMcosD9iblfy4qQ/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)
后台页面列表添加缩略图效果

![图片](https://www.3bbs.cn/index-diy/img.php?url=https://mmbiz.qpic.cn/sz_mmbiz_png/AicEIek12zX2c4icCeO8LBIDicWxHoewRZL5LQwNibdqT7qnARjLpT0y1gjreh39JXv3LE6GayrgRQ6QXdA0Aoq8yw/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)
后台文章列表添加缩略图效果

### 实现代码

```
//为后台页面和文章列表添加缩略图显示
// 为页面列表添加缩略图列
add_filter('manage_pages_columns', 'taxingmei_add_page_thumbnail_column');
add_action('manage_pages_custom_column', 'taxingmei_display_page_thumbnail', 10, 2);

function taxingmei_add_page_thumbnail_column($columns) {
    $columns['taxingmei_page_thumbnail'] = __('Page Thumbnail');
    return $columns;
}

function taxingmei_display_page_thumbnail($column_name, $post_id) {
    if ($column_name === 'taxingmei_page_thumbnail') {
        $thumbnail_id = get_post_thumbnail_id($post_id);
        if ($thumbnail_id) {
            $thumbnail = wp_get_attachment_image_src($thumbnail_id, 'thumbnail');
            if ($thumbnail) {
                echo '<img src="'. esc_url($thumbnail). '" width="50" height="50" />';
            }
        } else {
            echo 'No Thumbnail';
        }
    }
}

// 为文章列表添加缩略图列
add_filter('manage_posts_columns', 'taxingmei_add_post_thumbnail_column');
add_action('manage_posts_custom_column', 'taxingmei_display_post_thumbnail', 10, 2);

function taxingmei_add_post_thumbnail_column($columns) {
    $columns['taxingmei_post_thumbnail'] = __('Post Thumbnail');
    return $columns;
}

function taxingmei_display_post_thumbnail($column_name, $post_id) {
    if ($column_name === 'taxingmei_post_thumbnail') {
        $thumbnail_id = get_post_thumbnail_id($post_id);
        if ($thumbnail_id) {
            $thumbnail = wp_get_attachment_image_src($thumbnail_id, 'thumbnail');
            if ($thumbnail) {
                echo '<img src="'. esc_url($thumbnail). '" width="50" height="50" />';
            }
        } else {
            echo 'No Thumbnail';
        }
    }
}
```

以下是对这段代码的详细分析:

### 一、整体结构和目的

这段 PHP 代码是为 WordPress 网站的后台管理界面进行功能扩展。其主要目的是在页面和文章的管理列表中添加一个显示缩略图的列,以便管理员能够更直观地查看页面或文章是否有特色图像(缩略图)。

### 二、具体函数和操作解析

1. `add_filter('manage_pages_columns', 'taxingmei_add_page_thumbnail_column');`

* 这里使用了 WordPress 的 `add_filter`函数,将一个名为 `taxingmei_add_page_thumbnail_column`的函数注册到 `manage_pages_columns`过滤器。这个过滤器用于修改页面管理列表的列。
* 其作用是在页面管理列表中添加一个新的列,用于显示页面的缩略图。

2. `add_action('manage_pages_custom_column', 'taxingmei_display_page_thumbnail', 10, 2);`

* 使用 `add_action`函数将 `taxingmei_display_page_thumbnail`函数注册到 `manage_pages_custom_column`动作。这个动作用于在页面管理列表的自定义列中填充内容。
* 当页面管理列表中的某一列被渲染时,这个函数会被调用,以确定该列的内容。

3. `function taxingmei_add_page_thumbnail_column($columns)`

* 这个函数接受一个参数 `$columns`,它是一个包含页面管理列表现有列信息的数组。
* 在函数内部,向这个数组添加了一个新的键值对,键为 `taxingmei_page_thumbnail`,值为 `“Page Thumbnail”`,表示新添加的列的标题是 `“Page Thumbnail”`。

4. `function taxingmei_display_page_thumbnail($column_name, $post_id)`

* 这个函数接受两个参数,`$column_name`表示当前列的名称,`$post_id`是当前页面的 ID。如果当前列的名称是 `taxingmei_page_thumbnail`,说明正在渲染新添加的缩略图列。
* 首先,通过 `get_post_thumbnail_id($post_id)`获取当前页面的特色图像 ID。如果有特色图像 ID(即 `$thumbnail_id`不为空),则使用 `wp_get_attachment_image_src($thumbnail_id, 'thumbnail')`获取特色图像的缩略图 URL。如果获取成功(即 `$thumbnail`不为空),则输出一个 `<img>`标签,显示缩略图,并设置宽度为 50 像素,高度为 50 像素。如果没有特色图像,则输出 `“No Thumbnail”`。

5. 对于文章列表的部分 `(add_filter('manage_posts_columns',`其作用与页面列表的部分类似,只是针对文章管理列表进行操作。

在当前使用主题的 `functions.php` 文件里或者之前分享的 [制作简单WordPress插件](https://www.3bbs.cn/thread-515-1-1.html) 里添加以上代码即可在后台的页面和文章列表显示缩略图。

注:以上代码经过AI分析调整,仅供学习记录。
页: [1]
查看完整版本: 为WordPress后台页面和文章列表添加缩略图