我一直在构建一个基于inuitcss的WordPress模板,以获得一个响应式页面。
在这个模板中,我试图从某个类别中获取WP帖子,并将它们划分为预定义的列数。为实现这一点,我计算了类别中的帖子数量,并计算了帖子的必要数据,以便均匀分割。
我一直在使用this(页面上的最后一个)示例并更新了几个已弃用的函数。
我目前面临的问题是所有列都加载了相同的帖子,而且他们只加载了最后两个而不是该类别中的所有可用帖子。
以下代码是我目前使用的代码,结果可以在http://www.alikivanderkruijs.com/wp找到(点击“项目”)。
我已经坐了一会儿,似乎无法做到正确。我希望有人可以帮助我!
<?php
$proj_posts = get_posts('cat=15');
$count_proj_posts = count($proj_posts);
$split_proj_posts = round($count_proj_posts/2);
?>
<div class="gw">
<div id="menuwrap">
<h3 class="work">PROJECTS</h3>
<div>
<div class="g one-sixth lap-one-sixth nomob">
</div>
<div class="g two-sixths lap-two-sixths palm-one-whole">
<div class="content">
<?php query_posts('cat=15&showposts=' . $split_proj_posts . ''); ?>
<?php $posts = get_posts('posts_per_page=' . $split_proj_posts . '&offset=0'); foreach ($posts as $post) : the_post(); ?>
<?php static $proj_count1 = 0; if ($proj_count1 == $split_proj_posts) { break; } else { ?>
<div <?php post_class(); ?>>
<h4><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
<?php the_content(); ?>
</div>
<?php $proj_count1++; } ?>
<?php endforeach; ?>
</div>
</div>
<div class="g two-sixths lap-two-sixths palm-one-whole">
<div class="content">
<?php rewind_posts(); ?>
<?php query_posts('cat=15&showposts=' . $split_proj_posts . ''); ?>
<?php $posts = get_posts('posts_per_page=' . $split_proj_posts . '&offset=' . $split_proj_posts . ''); foreach ($posts as $post) : the_post(); ?>
<?php static $proj_count2 = 0; if ($proj_count2 == $split_proj_posts) { break; } else { ?>
<div <?php post_class(); ?>>
<h4><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
<?php the_content(); ?>
</div>
<?php $proj_count2++; } ?>
<?php endforeach; ?>
</div>
</div>
<div class="g one-sixth lap-one-sixth nomob">
</div>
</div>
答案 0 :(得分:0)
你过于复杂,只需获取所有帖子并计算到一半,然后回显结束和打开标签以创建新行:
<div class="gw">
<div id="menuwrap">
<h3 class="work">PROJECTS</h3>
<div>
<div class="g one-sixth lap-one-sixth nomob">
</div>
<div class="g two-sixths lap-two-sixths palm-one-whole">
<div class="content">
<?php
$args = array(
'numberposts' => -1,
'posts_per_page' => '',
'offset' => 0,
'category' => '15',
'orderby' => 'post_date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'post_status' => 'publish',
'suppress_filters' => true);
$posts_array = get_posts($args);
$split_at = round(count($posts_array)/2)-1;
$count = 0;
foreach ($posts_array as $post_object):setup_postdata($post);
?>
<div <?php post_class(); ?>>
<h4><a href="<?php the_permalink() ?>" rel="bookmark"
title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
</h4>
<?php the_content(); ?>
</div>
<?php
//IF we are halfway through, close 1st row and
start a new one
if ($count == $split_at) {
?>
</div>
</div>
<div class="g two-sixths lap-two-sixths palm-one-whole">
<div class="content">
<?php
}
$count++; ?>
<?
endforeach;
?>
</div>
</div>
<div class="g one-sixth lap-one-sixth nomob">
</div>
</div>
</div>
我已经离开了完整的args数组,因为它对其他人很有用,但你只需要在你的情况下使用cat参数。
编辑好了,setup_postdata存在缺陷,只是检查了文档并且它没有按预期工作。建议的解决方法是像这样设置全局post对象:
setup_postdata( $GLOBALS['post'] =& $post_object )
更改该部分应解决该问题。计数问题仍然很奇怪。