将样式添加到页面列表上的WordPress管理

时间:2019-06-05 作者:Schalk Joubert

是否可以将page slug作为一个类添加到Wordpress admin中的页面列表中?

原因是,如果某个页面存在选项页面,我想通过编程在管理中隐藏该页面。

因此,我的管理风格在功能上将是这样的:

#the-list .contact { display: none; }

而不是:

#the-list #post-20 { display: none; }

已附加屏幕截图。

非常感谢。

Screenshoyt showing the #the-list #post-20 in Wordpress Pages page

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

如果您想使用PHP解决方案,那么post_class 过滤器挂钩(codex) 将允许您这样做-请参见下面的示例。可以将其粘贴到函数中。php。

请注意,从帖子列表中隐藏帖子并不会限制其访问,用户仍然可以直接使用帖子的编辑url访问编辑屏幕或使用顶部管理栏中的链接。

function set_admin_post_class( $classes, $class, $post_id ) {

    // affect post classes only in dashboard context
    if ( ! is_admin() ) {
         return $classes;
    }

    // Figure out where in dashboard we actually are
    // This will return early if we are not currently editing "pages"
    $screen = get_current_screen();
    if ( empty( $screen->post_type ) || \'page\' !== $screen->post_type || \'edit\' !== $screen->base ) {
        return $classes;
    }

    // Now let\'s get list of all items from admin menu
    global $menu;
    // $menu is an array of arrays, label comes always first in every element
    $menu_labels = array_map( function( $item ) {
        return array_shift( $item );
    }, $menu );

    // Finally we can check if a post name is the same as any of menu item\'s label
    $post_title = get_the_title( $post_id );
    if ( in_array( get_the_title( $post_id ), $menu_labels ) ) {
        $classes[] = sanitize_title_with_dashes( $post_title ); // you can set whatever class you want instead of $post_title. i.e. \'hidden\' or \'contact\'. In my example we are setting the same class as post title.
    }

    return $classes;
}

add_filter( \'post_class\', \'set_admin_post_class\', 10, 3 );

相关推荐

如何不重写内联CSS规则

我不得不放弃这种风格。css父主题文件,并为“我的子文件夹”中的菜单重新设置了一个不带@媒体规则的副本,优先级为11。但现在这种新样式正在覆盖内联规则。有没有办法只覆盖父主题样式而不覆盖内联规则?我正在自定义wordpress高级主题,我的菜单太长,所以我不得不移动@媒体规则,以触发992px而不是700ishpx的移动菜单。为了在需要更新主题时保持这些更改,我不得不将样式从队列中删除。css核心文件,并从我的子文件夹(优先级为11)中为菜单(我知道这是唯一的解决方案,实现移动菜单的方式很奇怪(1),如果