WordPress Customizer 自定义器
像素鱼丸
12-09
222
0

在 WordPress 中使用 Customizer(自定义器) 是一种直观、实时预览的方式来修改网站的外观和部分功能,而无需直接编辑代码。以下是详细的使用方法:


一、进入 Customizer

方法 1:通过后台仪表盘

  1. 登录 WordPress 后台(通常是 your-site.com/wp-admin)。
  2. 在左侧菜单中点击 “外观” > “自定义”(Appearance → Customize)。

方法 2:前端快捷入口(如果主题支持)

  • 在网站前台登录状态下,顶部工具栏会出现一个黑色管理栏。
  • 点击 “自定义” 按钮,直接进入 Customizer 并实时预览当前页面。

二、Customizer 主要功能模块(取决于主题和插件)

不同主题或插件会添加不同的选项,但常见模块包括:

模块 功能说明
站点身份(Site Identity) 设置网站标题、副标题、Logo、站点图标(favicon)等。
颜色(Colors) 修改主题主色、背景色、文字颜色等(需主题支持)。
菜单(Menus) 创建、编辑导航菜单,并分配到主题注册的菜单位置(如顶部菜单、页脚菜单)。
小工具(Widgets) 管理侧边栏、页脚等区域的小工具(注意:块主题中此功能可能被“模板部件”替代)。
首页设置(Homepage Settings) 选择首页显示“最新文章”还是“静态页面”,并指定首页和文章页。
其他(Additional CSS) 添加自定义 CSS 样式,实时预览效果。
主题选项(Theme Options) 某些主题(如 Astra、OceanWP)会在此添加布局、字体、按钮样式等高级设置。

 提示:你看到的选项取决于你当前使用的 主题激活的插件


  1. 进入 Customizer
  2. 点击 “站点身份”
  3. 点击 “选择 Logo”,从媒体库上传或选择已有图片。
  4. 可调整 Logo 尺寸(如果主题支持)。
  5. 左侧实时预览变化。
  6. 确认无误后,点击右上角 “发布”(Publish)保存更改。

四、保存与发布

  • 所有修改在 Customizer 中都是 临时预览,不会立即生效。
  • 只有点击右上角 “发布” 按钮后,更改才会应用到网站。
  • 如果不想保存,可直接关闭页面或点击 “退出自定义”

五、开发者扩展 Customizer(可选)

如果你是开发者,可以通过 customize_register 钩子向 Customizer 添加自定义面板、章节、控件:

function mytheme_customize_register( $wp_customize ) {
    $wp_customize->add_setting( 'mytheme_phone', array(
        'default' => '',
        'sanitize_callback' => 'sanitize_text_field'
    ) );

    $wp_customize->add_control( 'mytheme_phone', array(
        'label' => '联系电话',
        'section' => 'title_tagline', // 放在“站点身份”下
        'type' => 'text'
    ) );
}
add_action( 'customize_register', 'mytheme_customize_register' );

然后在主题模板中调用:

echo get_theme_mod( 'mytheme_phone' );

 

六,添加一个全新的选项卡(Panel / Section)

在 WordPress 的 Customizer(自定义器) 中添加一个全新的选项卡(Panel / Section),需要通过 PHP 代码在主题的 functions.php 文件中注册。下面是一个完整、清晰的示例,教你如何创建一个自定义选项卡(比如“联系信息”),并添加设置项(如电话、邮箱等)。


 目标

  • 在 Customizer 中新增一个名为 “联系信息” 的选项卡(Section)
  • 添加两个输入框:联系电话电子邮箱
  • 前端可调用这些值显示

步骤 1:将以下代码添加到主题的 functions.php 文件中

 建议使用子主题(Child Theme)修改,避免主题更新丢失代码。

/**
 * 在 Customizer 中添加“联系信息”选项卡
 */
function mytheme_customize_register( $wp_customize ) {

    // === 1. 添加一个新的 Section(选项卡)===
    $wp_customize->add_section( 'mytheme_contact_section', array(
        'title'       => __( '联系信息', 'mytheme' ),
        'priority'    => 30, // 显示顺序,数字越小越靠前
        'capability'  => 'edit_theme_options',
        'description' => __( '在此设置网站的联系信息。', 'mytheme' ),
    ) );

    // === 2. 添加“联系电话”设置项 ===
    $wp_customize->add_setting( 'mytheme_phone_number', array(
        'default'           => '',
        'sanitize_callback' => 'sanitize_text_field',
        'transport'         => 'refresh', // 或 'postMessage'(需配合 JS 实现实时预览)
    ) );

    $wp_customize->add_control( 'mytheme_phone_control', array(
        'label'    => __( '联系电话', 'mytheme' ),
        'section'  => 'mytheme_contact_section',
        'settings' => 'mytheme_phone_number',
        'type'     => 'text',
    ) );

    // === 3. 添加“电子邮箱”设置项 ===
    $wp_customize->add_setting( 'mytheme_email_address', array(
        'default'           => '',
        'sanitize_callback' => 'sanitize_email',
        'transport'         => 'refresh',
    ) );

    $wp_customize->add_control( 'mytheme_email_control', array(
        'label'    => __( '电子邮箱', 'mytheme' ),
        'section'  => 'mytheme_contact_section',
        'settings' => 'mytheme_email_address',
        'type'     => 'email',
    ) );
}
add_action( 'customize_register', 'mytheme_customize_register' );

步骤 2:在前端模板中显示这些值

例如,在页脚 footer.php 中显示:

<?php
$phone = get_theme_mod( 'mytheme_phone_number' );
$email = get_theme_mod( 'mytheme_email_address' );

if ( $phone || $email ) :
?>
<div class="site-contact-info">
    <?php if ( $phone ) : ?>
        <p>电话: <?php echo esc_html( $phone ); ?></p>
    <?php endif; ?>
    <?php if ( $email ) : ?>
        <p>邮箱: <a href="mailto:<?php echo esc_attr( $email ); ?>"><?php echo esc_html( $email ); ?></a></p>
    <?php endif; ?>
</div>
<?php endif; ?>

 补充说明

 关于 Panel(面板) vs Section(节)

  • Section 是 Customizer 左侧的一个独立选项卡(如“站点身份”、“菜单”)。
  • 如果你希望把多个 Section 归类到一个 顶级分组(Panel) 下(比如“主题选项”下包含“联系信息”、“社交媒体”等),可以先创建 Panel:
$wp_customize->add_panel( 'mytheme_options_panel', array(
    'title'       => __( '我的主题选项', 'mytheme' ),
    'priority'    => 150,
) );

// 然后在 add_section 时指定 'panel' => 'mytheme_options_panel'

 实时预览(Live Preview)

若想实现不刷新页面的实时预览(如改颜色立即生效),需将 transport 设为 'postMessage',并配合 JavaScript。但文本类内容通常用 'refresh' 即可。


 效果

保存后进入 外观 > 自定义,你会看到左侧多出一个 “联系信息” 选项卡,可输入电话和邮箱,并在网站前端安全地显示。


如果你希望添加更多类型(如开关、下拉菜单、颜色选择器等),也可以告诉我,我可以提供对应控件代码!

收藏
打赏
Mirage 主题 v2.56.0 发布
上一篇
WordPress Customizer 自定义器控件类型
下一篇

发表评论

注册不是必须的

像素鱼丸
152 文章
0 评论
4 喜欢
最新文章

网站的 Cookie 弹窗

在当前的法规环境下(截至2026年4月),一个合规的Cookie弹窗设计必须遵循“透明、公平、明确”的原则,核心是确保用户拥有真正的选择权。 以下是现阶段设计合规Cookie弹窗的关键要点: 现阶段合规设计要点 禁止默认同意 弹窗出现时,所有非必要Cookie的选项都不能被预先勾选。用户必须通过一个明确的、主动的动作(如点击按钮或勾选方框)来表示同意。 提供平等的选择权 “拒绝”按钮必须在视觉上和 […]

网页设计中 banner、jumbotron、hero 都有什么区别

在网页设计和开发中,banner、jumbotron、hero 这些词通常指代页面顶部最引人注目的区域,但它们在具体含义和使用场景上有所区别。 🎯 核心概念辨析 Banner (横幅/条幅广告) 这是一个非常广泛的术语,通常指网页上任何矩形的广告或信息区域,可以出现在页面的顶部、侧边或底部。它更偏向于广告或信息展示的功能。 Jumbotron (巨幕) 这个词源于 Bootstrap 等前端框架, […]

宝塔 Nginx 拦截了 WordPress 返回 404 的状态

REST api 接口中,有段代码返回404,但是没有正常返回错误json: $wp_response = new \WP_REST_Response(array('error'=>'没有找到数据')); $wp_response->set_status(404); return $wp_response; 返回内容是: <html> <head><tit […]

Mirage 主题 v2.93.0 发布

更新内容: refactor 移除图片高宽比开关 refactor 移除全局的TOC生成开关 refactor 优化 header.php 中的seo模块和样式覆盖 feat 主题启用的时候,移除非当前主题注册的小工具 fix 修复分类小工具的bug feat 管理员打开后台,检查最当前设置首页布局的模块,如果缺少最新模块,就添加到隐藏模块列表中 fix 优化链接卡片样式 fix 优化热门文章样式 […]
生成中...
扫描二维码
扫描二维码
用户登录