我认为代码中的主要问题是$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;
}