我正在尝试向WordPress自定义帖子类型列表页面中的每一行添加一个类,例如为后端上的每个帖子添加一个基于元字段值的类:
例如:我有一个功能“呼叫启用/禁用” - 如果帖子被禁用(即只能由某个用户查看),整行应该有一定的背景颜色。
所以我正在寻找一种基于元字段值添加CSS类的解决方案。
答案 0 :(得分:3)
我会留下你的材料来捣乱。
首先,检查帖子类,
我们可以通过以下方式更改它们:
add_action( 'load-edit.php', function(){
global $typenow; // current post type
add_filter( 'post_class', function( $classes, $class, $postID ) {
$classes[] = 'stack';
return $classes;
});
});
要打印CSS,请使用:
add_action( 'admin_head-edit.php', function(){
$color = 'FDFBC8';
if( isset( $_GET['color'] ) )
$color = $_GET['color'];
?>
<style>
tr.category-uncategorized {
background-color: #<?php echo $color; ?> !important;
}
tr.stack {
background-color: #333;
}
</style>
<?php
});
此示例在网址中查找?color=hexval
:
您将使用过滤器$postID
中的post_class
获取元数据。
答案 1 :(得分:0)
以防brasofilo的示例为您提供缺少参数警告,您可以按旧方式使用过滤器:
add_filter('post_class', 'name_of_your_function');
然后你必须定义这个功能。在这个例子中,我给每一行一个带有帖子ID的类:
function name_of_your_function($classes)
{
global $post;
$classes[] = 'post-id-' . $post->ID;
return $classes;
}
答案 2 :(得分:0)
functions.php
function my_post_class($classes, $class, $post_id){
$slug = get_post_field( 'post_name', $post_id );
$wrong_slug = false;
if(strpos($slug, '%') !== false){
$wrong_slug = true;
}
if(is_numeric(substr($slug, -1))){
$wrong_slug = true;
}
if($wrong_slug){
$classes[] = 'wrong-slug';
}
return $classes;
}
add_filter('post_class', 'my_post_class', 10, 3);
function admin_style() {
wp_enqueue_style('admin-styles', get_template_directory_uri().'/admin.css');
}
add_action('admin_enqueue_scripts', 'admin_style');
admin.css
tr.wrong-slug th, tr.wrong-slug td {
background-color: #FFCC99;
}