是的,没错,你需要Custom Meta Box 这将在后期编辑屏幕中创建复选框。
在本例中,它们是单选按钮,因为我们只需要一个值。
下面是创建它的代码。把它放在你的主题中functions.php
文件或创建simple plugin 因此,这变得与主题无关。
/* Define the custom box */
add_action( \'add_meta_boxes\', \'wpse_61041_add_custom_box\' );
/* Do something with the data entered */
add_action( \'save_post\', \'wpse_61041_save_postdata\' );
/* Adds a box to the main column on the Post and Page edit screens */
function wpse_61041_add_custom_box() {
add_meta_box(
\'wpse_61041_sectionid\',
\'Title Color\',
\'wpse_61041_inner_custom_box\',
\'post\',
\'side\',
\'high\'
);
}
/* Prints the box content */
function wpse_61041_inner_custom_box($post)
{
// Use nonce for verification
wp_nonce_field( \'wpse_61041_wpse_61041_field_nonce\', \'wpse_61041_noncename\' );
// Get saved value, if none exists, "default" is selected
$saved = get_post_meta( $post->ID, \'title_color\', true);
if( !$saved )
$saved = \'default\';
$fields = array(
\'red\' => __(\'Red\', \'wpse\'),
\'green\' => __(\'Green\', \'wpse\'),
\'blue\' => __(\'Blue\', \'wpse\'),
\'default\' => __(\'Default\', \'wpse\'),
);
foreach($fields as $key => $label)
{
printf(
\'<input type="radio" name="title_color" value="%1$s" id="title_color[%1$s]" %3$s />\'.
\'<label for="title_color[%1$s]"> %2$s \' .
\'</label><br>\',
esc_attr($key),
esc_html($label),
checked($saved, $key, false)
);
}
}
/* When the post is saved, saves our custom data */
function wpse_61041_save_postdata( $post_id )
{
// verify if this is an auto save routine.
// If it is our form has not been submitted, so we dont want to do anything
if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
return;
// verify this came from the our screen and with proper authorization,
// because save_post can be triggered at other times
if ( !wp_verify_nonce( $_POST[\'wpse_61041_noncename\'], \'wpse_61041_wpse_61041_field_nonce\' ) )
return;
if ( isset($_POST[\'title_color\']) && $_POST[\'title_color\'] != "" ){
update_post_meta( $post_id, \'title_color\', $_POST[\'title_color\'] );
}
}
代码基于
this Answer如何在适当的CSS规则下在主题中使用它(h1.default
, h1.red
, 等),无论您想将颜色类应用于标题的何处(index.php
, single.php
, 等等),使用类似于:
<?php $title_color = get_post_meta( get_the_ID(), \'title_color\', true); ?>
<h1 class="entry-title <?php echo esc_attr($title_color); ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>