【问题标题】:How to use custom field to add class to a post?如何使用自定义字段向帖子添加类?
【发布时间】:2016-01-31 07:13:16
【问题描述】:

我正在尝试向<div class="postthumbnail"> 添加另一个类。我想为一篇文章设置不同的样式。因此,经过研究,我发现最好的方法是使用自定义字段给帖子添加类。

本教程How to style WP posts different,尤其是底部的这一部分,解释了如何使用自定义字段向帖子添加类。我通过给自定义字段命名为“en_proceso_class”和值“en_proceso”,这是一个 css 类。但是我对需要添加的最后两个代码感到困惑。该教程不清楚我需要在哪里添加它们。

我原来的代码是:

        <?php
// set the "paged" parameter (use 'page' if the query is on a static front page)
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;

// the query
$the_query = new WP_Query( 'cat=9&posts_per_page=9&paged=' . $paged ); 
?>

<?php if ( $the_query->have_posts() ) : ?>

<?php
// the loop
while ( $the_query->have_posts() ) : $the_query->the_post(); 
?>

<div class="proyectpost">
            <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

            <div class="innerpost">

             <div class="postthumbnail">
            <?php if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
    $image_src = wp_get_attachment_image_src( get_post_thumbnail_id(),'full' );
     echo '<img src="' . $image_src[0]  . '" width="100%"  />';
    } ?>
            </div>
            <div class="posttitle">
        <h2><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
        <span><?php echo get_post_meta($post->ID, 'location', true); ?></span>
            </div><!-- .entry-header -->

        <div class="postsubtitle">
        <div class="datepanel">

        </div>
        </div>

</div>
</article><!-- #post-## --> 

</div>


<?php endwhile; ?>

<div class="paginationbar">
<?php
$big = 999999999; // need an unlikely integer

echo paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $the_query->max_num_pages,
    'show_all'           => True,
    'prev_next'          => False
) );
?>
</div>

<?php 
// clean up after the query and pagination
wp_reset_postdata(); 
?>

<?php else:  ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

这是我尝试将新代码添加到的代码部分:

<div class="innerpost">

            <?php $custom_values = get_post_meta($post->ID, 'en_proceso_class'); ?>

             <div class="postthumbnail <?php en_proceso_class('class-1 class-2 ' . $custom_variable); ?>">
            <?php if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
    $image_src = wp_get_attachment_image_src( get_post_thumbnail_id(),'full' );
     echo '<img src="' . $image_src[0]  . '" width="100%"  />';
    } ?>
            </div>

我需要做什么才能让它工作?

【问题讨论】:

    标签: php css wordpress custom-fields


    【解决方案1】:

    最后一部分不是 100% 清楚,但我会尽力回答。

    这段代码:

    $custom_values = get_post_meta($post->ID, 'en_proceso_class');
    

    获取帖子元字段名称的值:'en_proceso_class'。您实际上需要先设置它才能使其正常工作。并且您需要将“true”作为另一个参数添加到该函数。更多信息请看这里:https://developer.wordpress.org/reference/functions/get_post_meta/

    然后是这个:

    div class="postthumbnail <?php en_proceso_class('class-1 class-2 ' . $custom_variable); ?>">
    

    它调用了一个名为“en_proceso_class”的函数——我认为这不是你想要做的。除非您事先声明了该功能,否则您将执行以下操作:

    div class="postthumbnail <?php echo 'class-1 class-2 ' . $custom_variable; ?>">
    

    所以整个代码放在一起看起来像这样:

    <div class="innerpost">
        <?php 
            // Get post meta that is already set
            $custom_values = get_post_meta($post->ID, 'en_proceso_class', true); 
        ?> 
    
         <div class="postthumbnail <?php echo 'class-1 class-2 ' . $custom_values; ?>">
            <?php 
                if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
                    $image_src = wp_get_attachment_image_src( get_post_thumbnail_id(),'full' );
                    echo '<img src="' . $image_src[0]  . '" width="100%"  />';
                } 
            ?>
    </div>
    


    干杯

    【讨论】:

    • 谢谢!有用!我不喜欢一些教程和 wordpress 文档的地方是它们只提供代码并且对它应该去哪里含糊其辞。我需要查看实际代码以了解我需要做什么...
    • 没问题 ;) 很高兴我能帮上忙
    • 嗯...你知道 wordpress 中的元框吗?我正在考虑将此代码转换为元框复选框,但我无法弄清楚如何使用元框以及复选框的名称和值是什么。我想要做的是让客户对用户友好,因此,如果他在一个新帖子上并且想要设置不同的样式,我希望他点击复选框。我不希望他以任何方式改变价值。
    • 嘿,看看这个:codex.wordpress.org/Function_Reference/add_meta_box 在页面中间的示例中,他们向您展示了如何创建元框、添加字段并保存它。
    • 谢谢!感谢教程,我已经让它工作了:themefoundation.com/wordpress-meta-boxes-guide
    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多