每个类别名称的自定义颜色

时间:2019-02-28 作者:Benjamin Franklin

我已经测试了几个插件,没有一个是完美的解决方案。我希望有一个简单的解决方案,以便用户可以选择类别名称的颜色,这将是文本/链接的实际颜色,如下面的示例所示。我一直在玩弄这个,但找不到合适的方法将其纳入我自己的主题。非常感谢您的帮助。

2 个回复
SO网友:Qaisar Feroz

要实现这一点,请执行以下简单步骤:

添加颜色字段以使用挂钩添加/编辑类别屏幕category_add_form_fieldscategory_edit_form_fields

add_action(\'category_add_form_fields\', \'my_category_fields\', 10, 2);
add_action(\'category_edit_form_fields\', \'my_category_fields\', 10, 2);
function my_category_fields($term) {
        $cat_color = get_term_meta($term->term_id, \'cat_color\', true);
        if($cat_color == \'\') $cat_color = \'#000000\'; // Default black color

?>
<tr class="form-field">
        <th valign="top" scope="row"><label for="cat_color"><?php _e(\'Color code\'); ?></label></th>
        <td>
            <input type="color" size="40" value="<?php echo esc_attr($cat_color); ?>" id="cat_color" name="cat_color"><br/>
            <span class="description"><?php _e(\'Please select a color\'); ?></span>
        </td>
    </tr>
<?php
}
使用挂钩保存从添加/编辑类别屏幕提交的颜色字段edited_categorycreate_category

add_action(\'edited_category\', \'save_my_category_fields\', 10, 2);
add_action(\'create_category\', \'save_my_category_fields\', 10, 2);

function save_my_category_fields($term_id) {
   if (!isset($_POST[\'cat_color\'])) {
       return;
   }

update_term_meta($term_id, \'cat_color\', sanitize_text_field($_POST[\'cat_color\']));

}
最后使用保存的颜色get_term_meta()

get_term_meta($term_id, \'cat_color\', true);   // Replace $term_id with your own
例如,

<?php
$categories = wp_get_post_categories( $post_id );
foreach($categories as $category) { 
    $color = get_term_meta($category->term_id, \'cat_color\', true);
?>
     <li>
       <span class="label" style="background: <?php echo $color ; ?>">
          <a href="<?php echo get_category_link( $category->term_id ); ?>" >
             <?php echo $category->name ; ?>
         </a>
      </span>
    </li>
<?php 
   }
 ?>
我希望这对你有帮助!

SO网友:SamXronn

也许这对于您的问题来说太简单了,但您可以有一个自定义字段,允许用户键入十六进制或rgba颜色代码。只需将其与元素内联输出即可。

下面是一个使用ACF插件的示例。

<span class="label" style="background: <?php the_field(\'color\'); ?>"> </span>
第三方ACF插件还支持颜色选择器,以获得更好的用户体验。

相关推荐

Dropdown menu for categories

当我使用下面的代码时<?php wp_nav_menu( array(\'menu\' => \'categories\' )); ?> 我可以创建一个新的菜单来列出我创建的wordpress中的所有类别。我用它在页面中间列出所有类别。我现在的问题是:有没有一种简单的方法可以为存在的每个子类别创建下拉菜单?那么,当我点击一个特定的类别时,它的子类别会显示出来吗?