Wordpress只发布每个类别的1个帖子

时间:2012-06-06 12:06:12

标签: wordpress posts wp-list-categories

我有这个网站:http://n0rd.no/testing/我尝试制作它,以便每个播客在首页上都有一个帖子而不是该类别中的一个帖子。

我在此网站上找到了how do i get only 1 post from each category in wordpress,但无法弄清楚如何使用我的代码进行此操作。

有人可以帮助我吗?

<?php /* Template Name: category view */ ?>
<?php get_header(); ?>

<?php
    // Determine column/image size front page
    $cols = '3';
    $cols = get_option('woo_cols');
    $r1 = 3; $r2 = 2;
    if (get_option('woo_ratio1')) $r1 = get_option('woo_ratio1');
    if (get_option('woo_ratio2')) $r2 = get_option('woo_ratio2');
    if ( $cols == "1") {
        $class = "one"; $width = 940; $height = $width / $r1 * $r2;
    } elseif ( $cols == 2 ) {
        $class = "two"; $width = 460; 
    } elseif ( $cols == 3 ) {
        $class = "three"; $width = 300; 
    } elseif ( $cols == 4 ) {
        $class = "four"; $width = 220; 
    } elseif ( $cols == 5 ) {
        $class = "five"; $width = 172; 
    }
    $height = $width / $r1 * $r2;   
    $height = round($height);
?>

    <!-- Content Starts -->
    <div class="content">

    <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts('cat=83'); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); $count++; ?>

        <!-- Post Starts -->
        <div class="bg-photo-thumb <?php echo $class; ?>-col<?php if ($count == $cols) { echo ' last'; $count = 0; } ?>">
        <div class="photo-thumb"><?php ciii_category_images(); ?><h2 class="cattitle"><?php 
$category = get_the_category(); 
//print_r($category );
if($category[0]){
echo '<a href="'.get_category_link($category[0]->term_id ).'" class="catname">'.$category[0]->cat_name.'</a>';
}
?>
</h2><br clear="all" />
<h3 class="catdisc"><?php echo $category[0]->category_description;  ?></h3>

<?php
if (strpos($_SERVER[HTTP_REFERER], "twitter.com") == true) {
    echo "Hello Twitter User!";
}
?>
            <div class="fix"></div>

        </div>
        </div>
        <!-- Post Ends -->

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

        <div class="fix"></div>
        <div class="more_entries">
            <?php if (function_exists('wp_pagenavi')) wp_pagenavi(); else { ?>
            <div class="alignleft bg"><?php previous_posts_link(__('&laquo; Newer Entries ', 'woothemes' )) ?></div>
            <div class="alignright bg"><?php next_posts_link(__(' Older Entries &raquo;', 'woothemes' )) ?></div>
            <br class="fix" />
            <?php } ?> 
        </div>      
        <div class="fix"></div>

    </div><!-- Content Ends -->

<?php get_footer(); ?>

更新 - 我现在通过使用此代码使其工作:

<?php /* Template Name: category view */ ?>
<?php get_header(); ?>

<?php
    // Determine column/image size front page
    $cols = '3';
    $cols = get_option('woo_cols');
    $r1 = 3; $r2 = 2;
    if (get_option('woo_ratio1')) $r1 = get_option('woo_ratio1');
    if (get_option('woo_ratio2')) $r2 = get_option('woo_ratio2');
    if ( $cols == "1") {
        $class = "one"; $width = 940; $height = $width / $r1 * $r2;
    } elseif ( $cols == 2 ) {
        $class = "two"; $width = 460; 
    } elseif ( $cols == 3 ) {
        $class = "three"; $width = 300; 
    } elseif ( $cols == 4 ) {
        $class = "four"; $width = 220; 
    } elseif ( $cols == 5 ) {
        $class = "five"; $width = 172; 
    }
    $height = $width / $r1 * $r2;   
    $height = round($height);
?>
    <div class="content">
<?php

$news_cat_ID = get_cat_ID('News'); 
$news_cats   = get_categories("parent=$news_cat_ID");
$news_query  = new WP_Query();

foreach ($news_cats as $news_cat):
?>

<?php $news_query->query('posts_per_page=1&cat=' . $news_cat->term_id); ?>
<?php if ($news_query->have_posts()): $news_query->the_post(); ?>

        <div class="post">
        <div class="bg-photo-thumb <?php echo $class; ?>-col<?php if ($count == $cols) { echo ' last'; $count = 0; } ?>">
        <div class="photo-thumb"><?php ciii_category_images(); ?><h2 class="cattitle"><?php 
$category = get_the_category(); 
//print_r($category );
if($category[0]){
echo '<a href="'.get_category_link($category[0]->term_id ).'" class="catname">'.$category[0]->cat_name.'</a>';
}
?>
</h2><br clear="all" />
<h3 class="catdisc"><?php echo $category[0]->category_description;  ?></h3>

<?php
if (strpos($_SERVER[HTTP_REFERER], "twitter.com") == true) {
    echo "Hello Twitter User!";
}
?>
            <div class="fix"></div>

        </div>
        </div>
            <!-- do whatever you else you want that you can do in a normal loop -->
        </div>  

<?php endif; ?>

<?php endforeach; ?>
</div>

2 个答案:

答案 0 :(得分:1)

我用它来修复它:

<?php /* Template Name: category view */ ?>
<?php get_header(); ?>

<?php
    // Determine column/image size front page
    $cols = '3';
    $cols = get_option('woo_cols');
    $r1 = 3; $r2 = 2;
    if (get_option('woo_ratio1')) $r1 = get_option('woo_ratio1');
    if (get_option('woo_ratio2')) $r2 = get_option('woo_ratio2');
    if ( $cols == "1") {
        $class = "one"; $width = 940; $height = $width / $r1 * $r2;
    } elseif ( $cols == 2 ) {
        $class = "two"; $width = 460; 
    } elseif ( $cols == 3 ) {
        $class = "three"; $width = 300; 
    } elseif ( $cols == 4 ) {
        $class = "four"; $width = 220; 
    } elseif ( $cols == 5 ) {
        $class = "five"; $width = 172; 
    }
    $height = $width / $r1 * $r2;   
    $height = round($height);
?>
    <div class="content">
<?php

$news_cat_ID = get_cat_ID('News'); 
$news_cats   = get_categories("parent=$news_cat_ID");
$news_query  = new WP_Query();

foreach ($news_cats as $news_cat):
?>

<?php $news_query->query('posts_per_page=1&cat=' . $news_cat->term_id); ?>
<?php if ($news_query->have_posts()): $news_query->the_post(); ?>

        <div class="post">
        <div class="bg-photo-thumb <?php echo $class; ?>-col<?php if ($count == $cols) { echo ' last'; $count = 0; } ?>">
        <div class="photo-thumb"><?php ciii_category_images(); ?><h2 class="cattitle"><?php 
$category = get_the_category(); 
//print_r($category );
if($category[0]){
echo '<a href="'.get_category_link($category[0]->term_id ).'" class="catname">'.$category[0]->cat_name.'</a>';
}
?>
</h2><br clear="all" />
<h3 class="catdisc"><?php echo $category[0]->category_description;  ?></h3>

<?php
if (strpos($_SERVER[HTTP_REFERER], "twitter.com") == true) {
    echo "Hello Twitter User!";
}
?>
            <div class="fix"></div>

        </div>
        </div>
            <!-- do whatever you else you want that you can do in a normal loop -->
        </div>  

<?php endif; ?>

<?php endforeach; ?>
</div>

答案 1 :(得分:0)

也许我错了,但你试着改用你的:

<div class="content">

<?php

$cat_ID = get_cat_ID('News'); 
$cats   = get_categories("parent=$news_cat_ID");
$main_query  = new WP_Query();
$count = 0;

foreach ($cats as $cat):
   $news_query->query('posts_per_page=1&cat=' . $cat->term_id);
   if ($main_query->have_posts()): 
    $count++; 
    $main_query->the_post(); ?>
        <!-- Post Starts -->
        <div class="bg-photo-thumb <?php echo $class; ?>-col<?php if ($count == $cols) { echo ' last'; $count = 0; } ?>">
        <div class="photo-thumb"><?php ciii_category_images(); ?>
        <h2 class="cattitle">
        <?php $category = get_the_category(); 
        if($category[0]){
            echo '<a href="'.get_category_link($category[0]->term_id ).'" class="catname">'.$category[0]->cat_name.'</a>';
        }?>
        </h2>
    <br clear="all" />
    <h3 class="catdisc"><?php echo $category[0]->category_description;  ?></h3>
    <?php
    if (strpos($_SERVER[HTTP_REFERER], "twitter.com") == true) {
        echo "Hello Twitter User!";
    }
    ?>
        <div class="fix"></div>
        </div>
        </div>
        <!-- Post Ends -->
   <?php endif; ?>

<?php endforeach; ?>
<div class="fix"></div>
        <div class="more_entries">
            <?php if (function_exists('wp_pagenavi')) wp_pagenavi(); else { ?>
            <div class="alignleft bg"><?php previous_posts_link(__('&laquo; Newer Entries ', 'woothemes' )) ?></div>
            <div class="alignright bg"><?php next_posts_link(__(' Older Entries &raquo;', 'woothemes' )) ?></div>
            <br class="fix" />
            <?php } ?> 
        </div>      
        <div class="fix"></div>

    </div>