定制首发技术

时间:2012-04-09 作者:boomturn

似乎没有一种标准的方法来区分第一/高层职位。环顾四周,我发现了这个方法:

$current_query = new WP_Query(\'post_type=current&post_status=publish\'); 

// Pull out top/first post
$first_post = ( $paged == 0 ) ? $posts[0]->ID : \'\';

while ($current_query->have_posts()) : $current_query->the_post();

if ($first_post == $post->ID) {
    echo \'<div class="post top-post-special" id="post-\' . get_the_ID() . \'">\';
} else {
    echo \'<div class="post" id="post-\' . get_the_ID() . \'">\';
}
这依赖于$paged(似乎是Wordpress内置的)在第一篇文章中按预期添加“top post special”类。但是,当使用以下query\\u post而不是新的WP\\u query实例时,它将不再工作:

$args=array(
          \'taxonomy\' => \'highlights\',
            \'term\' => \'Featured\',
          \'post_type\' => \'highlights\',
        );

query_posts($args); 

$first_post = ( $paged == 0 ) ? $posts[0]->ID : \'\';         

if ( have_posts()) : while (have_posts()) : the_post();                 

if ($first_post == $post->ID) {
    echo \'<div class="post top-post-special" id="post-\' . get_the_ID() . \'">\';
} else {
    echo \'<div class="post" id="post-\' . get_the_ID() . \'">\';
}
我以为第二个和第一个类似,不知道我做错了什么。有没有更好或标准化的方法来定位第一个职位?看起来这会发生很多事情。

3 个回复
最合适的回答,由SO网友:aaronwaggs 整理而成

您不需要对此进行任何特殊查询。这里有一个实现它的方法

/**
 * conditional check ensures special class only shows on top post on first page.
 * if you want top post on page 2, etc. to have special class, just set $first_post to true
 */
if( (int) get_query_var( \'paged\' ) > 1 ){
    $first_post = false;
} else {
    $first_post = true;
}

if ( have_posts()) : while (have_posts()) : the_post();                 

if ( $first_post ) {
    echo \'<div class="post top-post-special" id="post-\' . get_the_ID() . \'">\';
    $first_post = false;
} else {
    echo \'<div class="post" id="post-\' . get_the_ID() . \'">\';
}

SO网友:Michael

您可以将一行更改为:

$first_post = ( !is_paged() ) ? $posts[0]->ID : \'\';
或者使用不同的方法:

if ($wp_query->current_post == 0 && !is_paged() ) {
       echo \'<div class="post top-post-special" id="post-\' . get_the_ID() . \'">\'; 
} else {
       echo \'<div class="post" id="post-\' . get_the_ID() . \'">\'; 
} 

SO网友:joeljoeljoel

更简单的解决方案:

<?php
if (have_posts()) {
    while (have_posts()) {
        the_post();

        // set class for first post on first page
        $class = (!is_paged() && $wp_query->current_post === 0) ? \'top-post-special\' : \'\';
?>

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

</div>

<?php
    }
}
?>

结束

相关推荐

Get paged outside of loop?

是否可以在标准WP循环之外进行寻呼?我已经在循环中使用了:<?php if ( $paged >= 2 ) { ?> Some text for the 2nd page on up <?php } ?> 但我希望能够在第二页或更大的所有页面上,在循环之外回显一些文本。可能的还是更好的方法?