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
}
答案 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(作为字符串),则可以使用此三进制显示此元框。