如何更改默认帖子列表栏的内容外观?

时间:2015-03-16 作者:Luca Reghellin

说到后台。

我通常为某些自定义帖子类型向backoffice添加列和过滤器。这里没问题。但是,如果我只是想更改默认列的内容,该怎么办?例如,如何更改帖子标题的颜色?比如说,列表上只有一些标题,比如基于帖子所属的术语?

我只需要像这样的动作

manage_{$post->post_type}_posts_custom_column
但对于常规/默认列。上述操作仅适用于自定义列。

2 个回复
SO网友:cybmeta

CSS就是答案。如果您查看每行的HTML代码(<tr>), 您将看到它有一些类,包括post ID、post status、post标记、categories等。因此,您可以轻松地基于该类和post标记应用CSS规则。

例如,这是我的一个站点中的一行:

<tr id="post-24392" class="post-24392 type-post status-publish format-standard has-post-thumbnail hentry category-ciencia-y-tecnologia tag-distancia tag-longitud tag-metro tag-sistema-internacional-de-unidades alternate iedit author-other level-0">
            <th scope="row" class="check-column">
                            <label class="screen-reader-text" for="cb-select-24392">Elige ¿?</label>
            <input id="cb-select-24392" type="checkbox" name="post[]" value="24392">
            <div class="locked-indicator"></div>
                        </th>
        <td class="post-title page-title column-title">
        Here the title
如果我想更改标题的颜色,如果帖子属于“metro”标签:

.tag-metro .post-title {
    color: red;
}
您可以将该CSS放入文件中enqueue it in admin.

如果术语来自自定义分类法,则可以钩住post\\u类以基于自定义分类法添加类:

add_filter( \'post_class\', function( $classes, $class, $ID ) {

    $taxonomy = \'my-custom-taxonomy\';

    $terms = get_the_terms( (int) $ID, $taxonomy );

    if( !empty( $terms ) ) {

        foreach( (array) $terms as $order => $term ) {

            if( !in_array( $term->slug, $classes ) ) {

                $classes[] = $term->slug;

            }

        }

    }

    return $classes;

}, 10, 3 );

SO网友:gmazzap

不幸的是,不存在这样的过滤器。然而,输出通过WordPress通常的过滤器。E、 g。\'the_title\' 用于标题。

唯一的问题是,您不能只向\'the_title\', 因为它会影响很多事情。但是,您可以使用仅在post list admin屏幕上触发的筛选器(edit.php) 将筛选器添加到标题。

例如:

// this filter is fired only on edit.php for \'post\' post type
add_filter(\'manage_edit-post_sortable_columns\', function($sortable) {

    // add a filter to post title. Use the lowest possible priority. 
    add_filter(\'the_title\', \'my_admin_title_color\', PHP_INT_MAX);

    return $sortable;
});

function my_admin_title_color($title) {
    // you can use template tags or even access to global $post
    if ( has_category(\'uncategorized\') ) {
        $title = \'<span style="color:#f00">\'.$title.\'</span>\';
    }

    return $title;
}
在上面的代码中,我使用了\'manage_edit-post_sortable_columns\' 因为是仅在edit.php 对于“post”post类型。

它是"manage_{$screen_id}_sortable_columns", 为不同的帖子类型使用不同名称触发的筛选器。作为示例,您可以使用"manage_edit-page_sortable_columns" 到目标页。这种特异性可以非常安全地添加广泛使用的the_title 过滤器挂钩。此外,通过使用极低优先级,应确保与其他过滤器的兼容性。

之后,您可以使用带有一些自定义样式(如我的示例代码中所做的)的span来包装标题,或者将一些自定义HTML类包装为带有外部CSS的样式。

结束

相关推荐

Customize Wordpress admin-bar

我想移动管理面板,这是当我在我的网站上,而不是在仪表板上显示。现在它像往常一样,在顶部,但它与我的固定导航交互,部分隐藏了它。所以我想把它垂直放在正确的位置。是否有这样的设置,或者我必须使用CSS?