管理非 post 或页面的内容

Managing content that is not a post or a page

我正在使用高级自定义字段按 post s(书籍)或页面(主页、联系人等)管理内容。但是,如果我想管理无法按 post 或页面组织的内容,如营业时间、公司名称、标语、徽标等,该怎么办?

这些字段可能会在整个站点中多次出现,例如在页眉、页脚、关于页面、联系页面、主页等。这些字段并不是真正的 post 类型并且创建相同的自定义字段每个页面都是多余的。

有没有办法在不按 post 或页面组织内容的情况下使用 ACF 管理内容?

类似于:

$fields = get_fields('general_info'); //not a page, not a post
echo $fields->site_name; //appears on every page
echo $fields->slogan; //appears on 70% of pages
echo $fields->logo; //appears on header, footer and about

A​​CF 的选项页面是处理此问题的好方法。首先,您在 functions.php 中注册选项页面,例如 -

if( function_exists('acf_add_options_page') ) {

    acf_add_options_sub_page(array(
        'title' => 'Theme Options',
        'parent' => 'options-general.php',
        'capability' => 'manage_options'
    ));

}

这将在 WP 菜单的“设置”下放置一个新页面。然后您可以将字段添加到此选项页面并使用 get_field('field_name', 'option');

在您的主题中检索它们

http://www.advancedcustomfields.com/add-ons/options-page/

可以使用Customize Screen,即原生。您只需将一个函数挂接到 customize_register 操作,并在其中创建部分和 settings/controls,如下所示:

function mytheme_customize_register( $wp_customize ) {
    $wp_customize->add_section('custom_footer', array(
       'title'    => 'Footer',
       'priority' => 125,
    ));
    $wp_customize->add_setting('copyright', array(
        'default'        => '',
        'capability'     => 'edit_theme_options',   
    )); 
    $wp_customize->add_control('copyright', array(
        'label'      => 'Copyright',
        'section'    => 'custom_footer',
        'settings'   => 'copyright',
    ));
}
add_action('customize_register', 'mytheme_customize_register');

要使用您只需调用的值

get_theme_mod('copyright');

希望对您有所帮助!