WordPress代码样式优化 && 创建子主题

Naseele 技术工坊 41 次阅读 1644 字 预计阅读时间: 7 分钟 发布于 2025-11-28 最后更新于 2025-12-18


AI 摘要

嘿,博主教你如何优雅地“装修”WordPress博客!🎨 这篇教程手把手带你创建子主题,就像给房子加个“装修层”,既能保留原主题功能,又能自由定制。还教你用代码“魔法”优化文章特色图显示,并让专业插件接管代码高亮,让技术文章看起来更清爽。最后还有切换主题不丢设置的贴心小技巧!想打造独特博客风格?快来看看吧~

使用wordpress + Sakurairo

一、创建子主题

来到我们wordpress的安装目录。

创建自己的子主题文件夹,名字自己起:

cd 你的安装路径/wordpress/wp-content/themes/
sudo mkdir naseeleTh1

进入自己的子主题文件夹,创建functions.php和style.css:

cd naseeleTh1
sudo touch functions.php
sudo touch style.css

修改sytle.css,继承我们原来的主题:

sudo nano style.css

写入:

/*
Theme Name: naseeleTh1
Template: Sakurairo
Version: 1.1
*/

保存并退出编辑器。

修改functions.php,加入:

// 强制关闭父主题内置代码高亮(让插件接管)
// 仅覆盖代码高亮方式为 custom,其它配置保持不变
add_filter('option_iro_options', function ($opts) {
    if (is_array($opts)) {
        $opts['code_highlight_method'] = 'custom';
        // 同时清理 Prism 相关选项,避免前端误判(可选)
        $opts['code_highlight_prism_line_number_all'] = false;
        $opts['code_highlight_prism_autoload_path'] = '';
        $opts['code_highlight_prism_theme_light'] = '';
        $opts['code_highlight_prism_theme_dark'] = '';
    }
    return $opts;
});

可以顺带优化一下文章特色图片展示,让他不在博客界面展示,以免裁剪错误导致图片只能显示局部(参考),如果需要的话我们这样写functions.php:

<?php
/**
 * Sakurairo Child: 隐藏单篇文章的特色图以达到与无特色图一致的样式。
 * 条件:
 * - 仅在单篇文章(single post)页面生效
 * - 仅作用于当前主查询的文章对象(不影响上一篇/下一篇等相邻文章)
 * - 保留视频封面(有 video_cover 时不隐藏)
 * - 保留强制使用特色图为头图(use_as_thumb === 'true' 时不隐藏)
 */
add_filter('get_post_metadata', function ($value, $object_id, $meta_key, $single) {
    // 只拦截特色图元数据
    if ($meta_key !== '_thumbnail_id') {
        return null; // 使用默认处理
    }

    // 仅在单篇文章页处理
    if (!is_single()) {
        return null;
    }

    // 仅作用于当前主查询的文章对象,避免影响相邻文章
    $queried_id = get_queried_object_id();
    if ((int)$object_id !== (int)$queried_id) {
        return null; // 放行其它文章(如上一篇/下一篇)
    }

    // 若启用视频封面或明确“强制作为头图”,则不隐藏
    $use_as_thumb = get_post_meta($object_id, 'use_as_thumb', true); // 'true','only',(default)
    $video_cover  = get_post_meta($object_id, 'video_cover', true);

    if ($use_as_thumb === 'true' || !empty($video_cover)) {
        return null; // 保持原值
    }

    // 模拟“没有特色图”,使父主题走无图样式(header 输出 blank;正文显示标题)
    return $single ? '' : [];
}, 10, 4);
// 强制关闭父主题内置代码高亮(让插件接管)
// 仅覆盖代码高亮方式为 custom,其它配置保持不变
add_filter('option_iro_options', function ($opts) {
    if (is_array($opts)) {
        $opts['code_highlight_method'] = 'custom';
        // 同时清理 Prism 相关选项,避免前端误判(可选)
        $opts['code_highlight_prism_line_number_all'] = false;
        $opts['code_highlight_prism_autoload_path'] = '';
        $opts['code_highlight_prism_theme_light'] = '';
        $opts['code_highlight_prism_theme_dark'] = '';
    }
    return $opts;
});

保存并退出。

如果有兴致还可以给你的子主题添加封面图片,它会展示在你的主题管理页,只需要往这个子主题文件夹放一个screenshot.jpg就行了,什么都不用写。

最后一定一定一定记得要更改文件归属权给www-data(该用户在容器内编号为33)

sudo chown -R 33:33 /home/naseele/nextcloud/html

二、安装代码渲染插件

去应用商店搜索Code Block Pro并下载,安装到我们的wordpress。网络不通的可以配置镜像或者考虑手动上传安装。

下载插件,启用。

三、切换到子主题

来到后台,先别急着切换,先去外观-自定义-额外css,把我们设的这个复制一下。

然后去外观-主题,这里能看到我们新创建的主题,切换到我们的子主题。

大功告成?等等,你会发现你以前的额外css设置没了(毕竟是额外,所以不会从父主题集成),我们改成复制的东西就派上用场了。什么?我刚才让你复制你没复制?Σ(⊙▽⊙"a,那你切换回原主题去复制吧。

好了现在来到外观-自定义-额外css,然后把我们原来的额外css代码粘贴进来,点发布,大功告成!