如果META_VALUE=‘YES’,则添加类?

时间:2013-01-10 作者:Desi

meta_key=_jsFeaturedPost meta_value=yes

我有一些帖子,其中有些有元键/值,有些没有。我想针对那些元键值为“是”的帖子,并为这些帖子添加一个CSS类,以便我可以为它们设置不同的样式。

理想情况下,类似于:如果meta\\u键(jsFeaturedPost)的meta\\u值为yes,则添加类。

我该怎么做?

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

这个post_class filter 是你的朋友。只需将其与get_post_meta().

function wpse80098_filter_post_class( $classes ) {
    global $post;
    if ( \'yes\' == get_post_meta( $post->ID, \'_jsFeaturedPost\', true ) ) {
        $classes[] = \'my-custom-css-class\';
    }
    return $classes;
}
add_filter( \'post_class\', \'wpse80098_filter_post_class\' );
只需更换my-custom-css-class 使用要应用于所讨论的post容器的任何类。

如评论中所述,此实施依赖于post_class() 在邮件容器中正确调用模板标记,例如:

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
编辑评论中的问题:

有没有一种方法可以动态地将a标记预先添加到带有特色类的帖子中?

最简单的方法可能是过滤the_content:

function wpse80098_filter_the_content( $content ) {
    global $post;
    if ( \'yes\' == get_post_meta( $post->ID, \'_jsFeaturedPost\', true ) ) {
        return \'<a href="http://example.com">\' . $content . \'</a>\';
    }
    return $classes;
}
add_filter( \'the_content\', \'wpse80098_filter_the_content\', 99 );
添加一个非常高的优先级数字,以便最后应用此筛选器。

结束