在帖子屏幕上添加一个向标题添加类别的复选框

时间:2012-08-06 作者:SudoWP

我需要一些帖子有不同的标题颜色,我想这可以通过帖子创建/编辑屏幕上的某种复选框来实现。如何添加复选框,然后在模板中检索值?

谢谢

2 个回复
SO网友:brasofilo

是的,没错,你需要Custom Meta Box 这将在后期编辑屏幕中创建复选框。

post 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>

SO网友:John Doe

@brasofilo工作很好,但如果您不想做太多编码,可以从Custom Fields. 默认情况下,它是隐藏的。您可以从Screen Options. &创建新字段;命名它color 并输入颜色名称value 领域然后将此代码放入主题中header.php 在下面</head> 标签

<style type="text/css">
/*Replace [color-name] with you color example: red*/
#red {color:"red";}
#green {color:"green";}
#[color-name] {color:"[color-name]";}
#[color-name] {color:"[color-name]";}
</style>
    <?php
global $post;
$color = get_post_meta(get_the_ID(), \'color\', true);
$id = "id="
?>
然后搜索<h1 class="entry-title" 把这个代码放进去<?php echo $id, $color;?>. 现在,当您想要更改标题颜色时,请选择color 在“自定义字段”下拉列表中(&C);在中写入颜色名称value.

结束

相关推荐

在短码中进行分页。GET_NEXT_POSTS_LINK不起作用,但GET_PREVICE_POSTS_LINK在其旁边工作正常

我正在尝试使用一个短代码输出一个自定义post类型的归档文件。除了get\\U next\\U posts\\U链接部分外,一切正常。奇怪的是,它就在一个完美工作的get\\u previous\\u posts\\u链接旁边。下面是函数function output_tips() { global $paged; $paged = get_query_var(\'paged\') ? get_query_var(\'paged\') : 1; $args = array( \'p