0

「日記」カテゴリに分類される投稿を除くすべての投稿を表示する、wordpress のメイン ページ index.php 内にコード行を挿入したいと考えています。

元のコード行は次のとおりです

<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>
    <div <?php post_class(); ?>>
    <span class="postlabel"><a href="<?php the_permalink() ?>"><span><?php the_time('d'); ?></span><?php the_time('M'); ?></a></span>
        <h2 class="post-title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> 
            <p class="info">
                <span class="catinfo"><?php _e('Filed in ', 'Mflat');?><?php the_category(' | ') ?></span>
                <span class="cmtinfo"><?php comments_popup_link( __( 'Leave a comment', 'Mflat' ), __( '1 Comment', 'Mflat' ), __( '% Comments', 'Mflat' ) ); ?><?php edit_post_link(' Edit', ' &#124; ', ''); ?></span>
            </p>
        <div class="entry">
            <?php $Mflat_options = get_option('Mflat_theme_options'); ?>
            <?php if ( $Mflat_options['home_excerpt_check']== 1 ) { the_excerpt(__('&raquo; Read more','Mflat')); } else {the_content(__('Continue Reading','Mflat'));} ?>
         </div>
        <?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
            <p class="infobottom">
                <?php if(function_exists('the_views')): ?><span class="count"><?php the_views(); ?></span><?php endif; ?>
                <?php if (has_tag()): ?><span class="tags"><?php the_tags(' '); ?></span><?php endif; ?>
                </p>
    </div>
        <?php endwhile; ?>
    <div class="flip">
        <div class="prevpost"><?php next_posts_link(__('Older Entries', 'Mflat')) ?></div>
        <div class="nextpost"><?php previous_posts_link(__('Newer Entries', 'Mflat')) ?></div>
    </div>
<?php else : ?>
<div id="main">
 <h2><?php _e('Not Found', 'Mflat'); ?></h2>
</div>
    <?php endif; ?>

次のコードを試しましたが、役に立ちませんでした

<?php if(have_posts()) : ?><?php while(have_posts()){
    <if(!in_category('Diary')){
        : the_post(); 
        }
    }?>

これを行うためのより良い方法はありますか?私はPHPが初めてで、何をしなければならないかのロジックは知っていますが、これを機能させるためのコードを完全に生成することはできません。ブール値は少し多すぎると思いますが、スタークオーバーフローで同様の (http://stackoverflow.com/questions/13587958/display-recent-posts-based-on-their-category-in-wordpress) スレッドを見つけましたが、それは私のニーズにはまったく合いません。

すべての貢献に心から感謝します。ありがとう

4

1 に答える 1

1

ループの前に関数を実行するだけですquery_posts()-ループを変更します

<?php
query_posts(array(
    'category_name' => 'my-category-slug', // get posts by category name
    'posts_per_page' => -1 // all posts
));
?>

<?php while(have_posts()): the_post(); ?>
    <h1><?php the_title(); ?></h1>

    <?php the_content(); ?>
<?php endwhile; ?>

申し訳ありませんが、カテゴリを除外したいことに気付きました。同じ関数、異なる引数:

$category = get_term_by('name', $cat_name, 'category'); // get category
$id = $category->term_id; // get the category ID

query_posts('cat=-' . $id); // exclude the found ID

<?php
$category = get_term_by('name', 'Diary', 'category'); // get category data
$id = $category->term_id; // get the category ID

// USE THIS IF YOU WANT TO _EXCLUDE_ ALL POSTS FROM "DIARY"
query_posts($query_string . '&cat=-' . $id);

// USE THIS IF YOU WANT TO GET ALL POSTS FROM "DIARY" ONLY
// query_posts($query_string . '&cat=' . $id);
?>

<?php if(have_posts()) : ?>
    <?php while(have_posts()) : the_post(); ?>
        <div <?php post_class(); ?>>
            <span class="postlabel"><a href="<?php the_permalink() ?>"><span><?php the_time('d'); ?></span><?php the_time('M'); ?></a></span>

            <h2 class="post-title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> 

            <p class="info">
                <span class="catinfo"><?php _e('Filed in ', 'Mflat');?><?php the_category(' | ') ?></span>
                <span class="cmtinfo">
                    <?php comments_popup_link( __( 'Leave a comment', 'Mflat' ), __( '1 Comment', 'Mflat' ), __( '% Comments', 'Mflat' ) ); ?>
                    <?php edit_post_link(' Edit', ' &#124; ', ''); ?>
                </span>
            </p>

            <div class="entry">
                <?php $Mflat_options = get_option('Mflat_theme_options'); ?>
                <?php if ( $Mflat_options['home_excerpt_check']== 1 ) { the_excerpt(__('&raquo; Read more','Mflat')); } else {the_content(__('Continue Reading','Mflat'));} ?>
             </div>

            <?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>

            <p class="infobottom">
                <?php if(function_exists('the_views')): ?><span class="count"><?php the_views(); ?></span><?php endif; ?>
                <?php if (has_tag()): ?><span class="tags"><?php the_tags(' '); ?></span><?php endif; ?>
            </p>
        </div>
    <?php endwhile; ?>

    <div class="flip">
        <div class="prevpost"><?php next_posts_link(__('Older Entries', 'Mflat')) ?></div>
        <div class="nextpost"><?php previous_posts_link(__('Newer Entries', 'Mflat')) ?></div>
    </div>
<?php else : ?>
    <div id="main">
        <h2><?php _e('Not Found', 'Mflat'); ?></h2>
    </div>
<?php endif; ?>
于 2012-12-18T09:53:03.090 に答える