gpt4 book ai didi

php - Wordpress 循环帖子的条件类

转载 作者:行者123 更新时间:2023-11-27 23:58:08 25 4
gpt4 key购买 nike

CSS 已经声明了,我所要做的就是添加一些 div 类。我的主题使用几乎没有 html 的空 index.php,但使用 get_template_part 函数并为帖子类型调用各种模板部分,因此它有几个 loop{template-name}.php 文件。我已经复制了一个用于博客索引并进行了修改并创建了一个新循环。我博客的索引调用了适当的模板并进行了修改 - 万岁。但是,我必须能够有条件地添加 div 类才能使转换工作完全进行。

当博客的 index.php 循环运行时,我希望能够有条件地向第一个返回的帖子添加一个 div 类,向第二个返回的帖子添加另一个 div 类,如果最后一个帖子是奇数,则添加一个第三 div 类。

这是我的 loop-template4.php 文件。

<?php /* If there are no posts to display, such as an empty archive page */ ?>
<?php if ( ! have_posts() ) : ?>
<div class="one"> /*I added this line here and it works for not found.
<div id="post-0" class="post error404 not-found">
<h1 class="entry-title"><?php _e( 'Not Found', 'smpl' ); ?></h1>
<div class="entry-content">
<p><?php _e( 'Apologies, but no results were found
for the requested archive. Perhaps searching will help find
a related post.', 'smpl' ); ?></p>
<?php get_search_form(); ?>
</div><!-- .entry-content -->
</div>
</div><!-- #post-0 -->
<?php endif; ?>

<?php

<?php while ( have_posts() ) : the_post(); ?>
/**
* I need to conditionally add one of 3 div classes here:
* odd `<div class="one_half">`,
* even `<div class="one_half last">`or
* odd and last, `<div class="one">`
*/

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

<h2 class="entry-title">
<a href="<?php the_permalink(); ?>" title="
<?php printf( esc_attr__(
'Permalink to %s', 'smpl' ), the_title_attribute( 'echo=0' ) );
?>" rel="bookmark"><?php the_title(); ?></a>
</h2>


<?php do_action('skeleton_post_meta'); ?>

<?php if ( is_archive() || is_search() ) : // Only display excerpts for
archives and search. ?>
<div class="entry-summary clearfix">
<?php if (ot_get_option('show_post_thumbnails') && has_post_thumbn
nil()){
echo '<div class="alignleft">';
skeleton_thumbnailer('fourthree');
echo '</div>';
}?>
<?php the_excerpt(); ?>
</div><!-- .entry-summary -->

<?php else : ?>

<div class="entry-content">
<?php
if (ot_get_option('show_post_thumbnails') && has_post_thumbnail()) {
echo '<div class="alignleft">';
skeleton_thumbnailer('thumbnail');
echo '</div>';
}?>
<?php //the_content( __(
'Continue reading <span class="meta-nav">&rarr;</span>', 'smpl' ) );
do_action('skeleton_content');
?>
<div class="clear"></div>
<?php wp_link_pages( array( 'before' => '<div class="page-link">' .
__( 'Pages:', 'smpl' ), 'after' => '</div>' ) ); ?>
</div><!-- .entry-content -->
<?php endif; ?>
</div> <!-- conditional div class -->
</div><!-- #post-## -->
<?php comments_template( '', true ); ?>

<?php endwhile; // End the loop. Whew. ?>

<?php /* Display navigation to next/previous pages when applicable */ ?>
<?php if ( $wp_query->max_num_pages > 1 ) {
do_action('skeleton_page_navi');
}?>

所以问题:

是否可以,因为循环还没有循环,我需要根据循环结果的数量有条件地添加 div 类?

最佳答案

据我所知,没有办法知道循环中的最后一篇文章何时显示,所以首先我们需要在你的行之前添加一些代码 `while (have_posts()) : the post().对于上下文,我已将您的整个代码块复制到此处,并添加了注释以显示新代码的位置:

<?php /* If there are no posts to display, such as an empty archive page */ ?>
<?php if ( ! have_posts() ) : ?>
<div class="one"> /*I added this line here and it works for not found.
<div id="post-0" class="post error404 not-found">
<h1 class="entry-title"><?php _e( 'Not Found', 'smpl' ); ?></h1>
<div class="entry-content">
<p><?php _e( 'Apologies, but no results were found
for the requested archive. Perhaps searching will help find
a related post.', 'smpl' ); ?></p>
<?php get_search_form(); ?>
</div><!-- .entry-content -->
</div>
</div><!-- #post-0 -->
<?php endif; ?>
<?php
/**
* BEGIN: Additional code to add conditional classes
*/
// How many posts are going to be displayed? Let's count here:
$total = 0;
while ( have_posts() ) : the_post();
$total++;
endwhile;
// Reset the loop to actually start displaying them
rewind_posts();

// Add this line before your loop to prevent notices being thrown
$count = 1;
while ( have_posts() ) : the_post(); ?>
<?php
// Add some conditions to determine the class
if ($count % 2) {
// If the post displayed is an odd number
$class = 'one_half last';
} else {
// If the post displayed is an even number
$class = 'one_half';
}

if ($count == $total && ($count % 2)) {
// If the post is the last post, and it is odd
$class = 'one';
}
// Finally, increment the count
$count++;
?>
<?php // If you need an extra div, just put it in like so... ?>
<div class="<?php echo $class; ?>">
<?php
// If you need the existing div to simply have the class added,
// Then we pass it into the post_class() function
?>
<div id="post-<?php the_ID(); ?>" <?php post_class($class); ?>>
<h2 class="entry-title">

关于php - Wordpress 循环帖子的条件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24097856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com