如何为每个标签云使用元数据a

时间:2017-07-09 作者:Ponte

希望我的标题有意义。不知道该怎么说。我在一个wordpress网站上工作,并使用插件为每个类别设置颜色。我希望标记云显示该颜色作为每个标记链接的背景。

以下是如何在页面中显示类别颜色:

$color = get_term_meta($category[0]->cat_ID, \'color\', true);
所有这些都可以很好地将颜色作为十六进制值进行响应,我只是不知道如何将其作为每个标记云链接的背景色。

有人有什么解决办法吗?

非常感谢您的关注和帮助!

庞特

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

WordPress使用以下格式为每个标记云链接输出一个方便的类名.tag-link-{term_id}. 这将允许我们根据每个术语的id来确定其目标。

此代码将为标记小部件输出的术语链接生成样式:

add_action( \'wp_head\', \'wpse_tag_colors\' );
function wpse_tag_colors() {
    $terms = get_terms( [
        \'taxonomy\'   => \'category\',
        \'hide_empty\' => false,
    ] );

    if ( empty( $terms ) || is_wp_error( $terms ) ) {
        return;
    }

    $output = \'<!-- Tag widget color styles -->\' . PHP_EOL;
    $output .= \'<style>\' . PHP_EOL;
    foreach ( $terms as $key => $term ) {
        $term_color = get_term_meta( $term->term_id, \'color\', true );

        if ( ! $term_color ) {
            continue;
        }

        $output .= ".tag-link-{$term->term_id} { background-color: " .
                    sanitize_hex_color( $term_color ) . "; }" . PHP_EOL; 
    }
    $output .= \'</style>\' . PHP_EOL;
    $output .= \'<!-- End Tag Widget color styles -->\' . PHP_EOL;

    echo $output;
}
请注意,上面的代码要求使用前面的#, e、 g。#bada55. 如果未使用哈希十六进制颜色值,则可以调整输出background-color 相应的价值。此外,确保使用sanitize_hex_color_no_hash() 用于消毒。

为了完整起见,下面是我用于添加和保存颜色术语元数据的代码。

// Add color field to Add new category term page.
add_action( \'category_add_form_fields\', \'wpse_category_add_form_fields\', 10, 2 );
function wpse_category_add_form_fields( $taxonomy ) { ?>
    <div class="form-field term-group">
        <label for="color"><?php _e( \'Term Color\', \'text_domain\' ); ?> 
          <input type="text" id="color" name="color" value=""/>
        </label>
    </div><?php
}

// Add color field to Edit category term page.
add_action( \'category_edit_form_fields\', \'wpse_category_edit_form_fields\', 10, 2 );
function wpse_category_edit_form_fields( $term, $taxonomy ) {
    $term_color = get_term_meta( $term->term_id, \'color\', true ); ?>

    <tr class="form-field term-group-wrap">
        <th scope="row">
            <label for="color">
              <?php _e( \'Term Color\', \'text_domain\' ); ?>
            </label>
        </th>
        <td>
            <input type="text" id="color" name="color" value="<?php
              echo sanitize_hex_color( $term_color ); ?>"/>
        </td>
    </tr><?php
}

// Save color for category term.
add_action( \'created_category\', \'wpse_category_save_term_color\', 10, 2 );
add_action( \'edited_category\', \'wpse_category_save_term_color\', 10, 2 );
function wpse_category_save_term_color( $term_id, $tag_id ) {
    //exit ( print_r( $_POST ) );
    if ( isset( $_POST[ \'color\' ] ) ) {
        update_term_meta( $term_id, \'color\', sanitize_hex_color( $_POST[ \'color\' ] ) );
    }
}

结束

相关推荐

Empty header tags

当我将“页面帖子”选项设置为特定页面时,该页面的标题为空,并且该页面没有结构化。该网站的定制主题为“二十一”。有人能给我指出一个可能的解决方案的方向吗?应如何:right display注意:由于调试服务的原因,其联机状态不可见