如何样式化选择一个css post_class的帖子(通过CUSTOM_FIELS添加?)?

时间:2015-03-29 作者:Rodrigo Cardoso

这是我试过但没能达到的。也许我需要一个完全不同的方法?

1) 我在帖子中创建了一个自定义字段,名为post-class 并插入值cita-flow800000 (奇怪的类名意味着:引用流结构使用#800000 作为主要颜色,供那些可能好奇的人使用)

2) 我在中调用了新的custom\\u值content-single.phppost_class 函数,并将变量插入post_class 函数,如下所示:

<article id="post-<?php the_ID(); ?>" <?php post_class(\'class-1 class-2\' . $custom_variable); ?>> <?php $custom_values = get_post_meta($post->ID, \'post_class\'); ?>
3)我选择了style.css:

.cita-flow800000 p { font-size: 30px; }
举个例子,但什么都没发生。

是否可以根据帖子类别的不同来设计不同的帖子风格?为不同的帖子结构创建不同的类,并在帖子元自定义字段和style.css 床单

PS-我尝试将post\\u类函数中的变量更改为$custom_values, 认为$custom_variable 可能是分享菜谱的帖子中的一个拼写错误,但仍然不起作用。所有函数似乎都正确调用了所有变量,那么为什么它不工作呢?

有谁能为我指明学习和应用这一点的方向?

2 个回复
SO网友:mrwweb

我认为代码中的主要问题是$custom_values 在尝试使用它(并且需要使用相同的变量名)之后设置。否则,它在中时没有值post_class(). 事实上,我很惊讶你没有出错。该变量需要在调用post_class.

<?php $custom_values = get_post_meta($post->ID, \'post_class\'); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class( \'class-1 class-2\' . $custom_values ); ?>> 
在上面的代码片段中,您还需要考虑以下事实:get_post_meta() 返回array 默认情况下。(这意味着上述代码片段可能仍然无法工作。)

因此,最好的做法是使用post_class filter (这也意味着,如果帖子也出现在存档页面上,你就可以得到这个类。

要使用过滤器,可以使用这样的代码段(未测试),可能在functions.php 文件:

add_filter( \'post_class\', \'wpse182657_post_class\', 10, 2 );
function wpse182657_post_class( $classes, $post_id ) {
    // get the meta
    // true assumes you only use one value per this key on any single post
    // if false, you\'d have to loop through the array with a foreach loop
    $post_class = get_post_meta( $post_id, \'post_class\', true );

    // add $post_class variable to $classes array
    $classes[] = esc_attr( $post_class );

    // run along now, $classes
    return $classes;
}

SO网友:Rodrigo Cardoso

它终于起作用了。下面是到源代码的链接和生成的代码。

https://wordpress.stackexchange.com/a/64124/69825 (检查答案中的更新#1编辑)它是通过编辑单个内容完成的。而不是通过函数中的过滤器。php文件。我试了两到三种食谱。我不明白为什么他们没有成功。

<?php $my_class = get_post_meta($post->ID, "your_meta_name") ?>
<div id="post-<?php the_ID(); ?>" <?php post_class( $my_class ); ?>>
它创建一个变量$my\\u class并将其添加到post\\u class函数中。该值在post元数据的自定义字段中确定。

变量是在函数中调用之前创建的,正如mrwweb在前面的回答中所建议的那样。

结束