我的自定义add_meta_box未显示在WordPress管理面板中

时间:2018-08-20 15:13:54

标签: wordpress meta-boxes

Wordpress的新手,并且在meta框内挣扎。无法使我的代码可以工作/显示,也无法找到有效的示例。什么都不想只显示在管理面板中,也不知道我缺少/做错了什么。 到现在为止,它似乎还没有触发回调函数。

我想做什么:

显示一个复选框以隐藏页面标题

我所看到的:

页面编辑屏幕上没有显示复选框

我在functions.php中的代码:

function twentyseventeenchild_hide_title() {
    add_meta_box(
        'no-title', // Unique id
        __( 'Hide title' ), // Title
        'twentyseventeenchild_hide_title_callback', // Callback
        'post', // Screen (such as post type, link or comment)
        'normal', // Context (normal, advanced, side)
        'default' // Priority (default, core, high, low)
        // Callback arguments
    );
}
add_action( 'add_meta_boxes', 'twentyseventeenchild_hide_title' );

/**
 * Meta box display callback.
 *
 * @param WP_Post $post Current post object.
 */
function twentyseventeenchild_hide_title_callback( $post ) {
    $meta = get_post_meta($post->ID, '_title', true);
    ?>
    <label><?php __('Hide title') ?></label>
    <input id="no_title" type="checkbox" autocomplete="off" value="<?=esc_attr($meta)?>" name="page_title">
    <?php
}

1 个答案:

答案 0 :(得分:2)

您使用的复选框不正确。

请参阅输入复选框:https://www.w3schools.com/tags/att_input_type_checkbox.asp 您的方法必须像这样:

    function twentyseventeenchild_hide_title_callback( $post ) {
        $meta = get_post_meta($post->ID, '_title', true);
        ?>
            <input id="no_title" type="checkbox" <?php ($meta === '1' ? 'selected' : ''); ?> name="page_title">
            <label for="no_title"><?php _e('Hide title') ?></label>
        <?php
    }

_e()用于翻译和回显,__()仅返回字符串而不打印。 ($meta === '1' ? 'selected' : '');是因为当您保存元框值时,true将另存为字符串1。如果值是euqals 1(作为字符串),则可以使用此三进制显示此元框。