在 WordPress 主题中切换多个 Headers

Switch Between Multiple Headers in WordPress Theme

我正在为 WordPress 构建自定义主题。我想做的一件事是允许自己从编辑页面切换 header。

我知道我可以在 header 中硬编码以根据页面 ID 或名称进行切换,如下所示:

<?php 
if(is_page(10)) {
 get_header('new');
}
else {
 get_header();
}
 wp_head();
?>

但我想要一个类似于边栏中的“页面模板”选项的下拉菜单。 (见截图)

Screenshot of sidebar menu

我已经查找过涵盖此类选项的任何在线教程,但它们都涵盖了上面显示的基本 ID 或名称设置。

有谁知道创建类似于页面模板的下拉列表以用于多个 header 的好教程吗?

您可以使用 Custom Metaboxes. That link contains a comprehensive tutorial on creating custom metaboxes for post meta fields by hand. You can also use a plugin like Advanced Custom Fields 创建它们。

这样做可以让您分别通过 get_post_meta() or get_field() 检查 header 样式值。

<?php
    // If using the Custom Metabox/post_meta approach:
    $header_style = get_post_meta( get_the_ID(), 'my_custom_header', true );

    // If using ACF:
    $header_style = get_field( 'my_custom_header', get_the_ID() );

    if( $header_style == 'new' ){
        get_header('new');
    if( $header_style == 'something-else' ){
        get_header('something-else');
    } else {
        get_header();
    }
?>