• 解決済 masahiko

    (@masahiko)


    こんにちは

    サイトトップページに記事の一覧を作成しました。
    実装したい分岐は、

    1、記事カテゴリーID:1に投稿された未来の記事のタイトル、日時、本文抜粋(ライブの情報など)を表示させる。
    (一番近い日程の1件のみ)

    2、記事カテゴリーID:1の未来の記事が無い場合は、記事p=10のタイトル、日時、本文抜粋を表示させる。

    以上の分岐を正常に機能させたいのですが、上手くいきません。

    現在1の部分までは正常に機能するページは作れました。

    <?php function filter_where($where = ”) {
    $where .= ” AND post_date < ‘” . date(‘Y-m-d’, strtotime(‘1 days’)) . “‘”;
    return $where;
    }
    add_filter(‘posts_where’, ‘filter_where’);?>
    <?php query_posts(‘&order=ASC&cat=1&showposts=1’);?>
    <?php if(have_posts()):while(have_posts()):the_post();?>”>
    <div class=”news_post”>
    <div class=”post_title”>
    <span class=”date”><?php the_time(‘m.d.Y’);?></span>
    <p><?php if(mb_strlen($post->post_title)>20)
    { $title= mb_substr($post->post_title,0,20) ; echo $title. “…”;
    } else {echo $post->post_title;}?></p>
    </div>

    <?php $postImage = getPostImage($post);
    if($postImage == null){
    echo ‘<div class=”img_flame”><div class=”first_img”><img class=”first_img” width=”100%” src=”xxx.jpg” /></div></div>’;
    }else{
    echo ‘<div class=”img_flame”><div class=”first_img”><img class=”first_img” alt=”‘.$postImage[“alt”].'”width=”100%” src=”‘.$postImage[“url”].'” /></div></div>’;
    } ?>
    <div class=”post_content”>
    <p><?php echo mb_substr(strip_tags($post-> post_content), 0, 50); ?></p>
    <p class=”more-link”>>>READ MORE</p >
    </div>
    </div>
    <?php endwhile;?>
    <?php endif;?>
    <?php wp_reset_query();?>
    <?php remove_filter(‘posts_where’, ‘filter_where’);?>

    これに、どのような条件分岐をつければ、良いのかわかりません。

    お分かりになる方がいらっしゃいましたら、教えて頂きたいと思っております。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    else を追加すればいいと思います。(未テスト)

    if ( have_posts( ) ) {
      while(have_posts()){
    
       /*.....*/
      }
    } else { 
    
      /* ここに、投稿がない場合の処理 */
    }

    トピック投稿者 masahiko

    (@masahiko)

    nobita様

    回答ありがとうございます。
    教えていただいた通り、else節を入れたコードを作成しましたが、
    今度は記事自体が表示されず、上手く作動しませんでした。

    <?php function filter_where($where = ”) {
    $where .= ” AND post_date < ‘” . date(‘Y-m-d’, strtotime(‘1 days’)) . “‘”;
    return $where;
    }
    add_filter(‘posts_where’, ‘filter_where’);?>
    <?php query_posts(‘&order=ASC&cat=1&showposts=1’);?>
    <?php if(have_posts()):while(have_posts()):the_post();?>”>
    <div class=”news_post”>
    <div class=”post_title”>
    <span class=”date”><?php the_time(‘m.d.Y’);?></span>
    <p><?php if(mb_strlen($post->post_title)>20)
    { $title= mb_substr($post->post_title,0,20) ; echo $title. “…”;
    } else {echo $post->post_title;}?></p>
    </div>

    <?php $postImage = getPostImage($post);
    if($postImage == null){
    echo ‘<div class=”img_flame”><div class=”first_img”><img class=”first_img” width=”100%” src=”xxx.jpg” /></div></div>’;
    }else{
    echo ‘<div class=”img_flame”><div class=”first_img”><img class=”first_img” alt=”‘.$postImage[“alt”].'”width=”100%” src=”‘.$postImage[“url”].'” /></div></div>’;
    } ?>
    <div class=”post_content”>
    <p><?php echo mb_substr(strip_tags($post-> post_content), 0, 50); ?></p>
    <p class=”more-link”>>>READ MORE</p >
    </div>
    </div>
    <?php endwhile;?>
    <?php remove_filter(‘posts_where’, ‘filter_where’);?>
    <?php wp_reset_query();?>

    <?php else :?>
    <?php query_posts(‘p=10’);?>
    <?php if(have_posts()):?>
    <?php while(have_posts()):the_post();?>”>

    <div class=”news_post”>
    <div class=”post_title”>
    <span class=”date”><?php the_time(‘m.d.Y’);?></span>
    <p><?php if(mb_strlen($post->post_title)>20)
    { $title= mb_substr($post->post_title,0,20) ; echo $title. “…”;
    } else {echo $post->post_title;}?></p>
    </div>
    <?php $postImage = getPostImage($post);
    if($postImage == null){
    }else{
    echo ‘<div class=”img_flame”><div class=”first_img”><img class=”first_img” alt=”‘.$postImage[“alt”].'”width=”100%” src=”‘.$postImage[“url”].'” /></div></div>’;} ?>

    <div class=”post_content”>
    <p><?php echo mb_substr(strip_tags($post-> post_content), 0, 50); ?></p>
    <p class=”more-link”>>>READ MORE</p >
    </div>
    </div>
    <?php wp_reset_query();?>

    <?php endwhile?><?php endif?>
    <?php endif?>

    以上のコードですが、何か間違いがあるのでしょうか?

    else文の後が実行されていないのであれば、問題はそこでしょうね。
    検証していませんが、特定の投稿を呼び出すのは get_post() でOKでは?

    トピック投稿者 masahiko

    (@masahiko)

    Pineapplen様

    ありがとうございました。
    以下のように変更して、解決いたしました。

    <?php function filter_where($where = '') {
    $where .= " AND post_date > '" . date('Y-m-d', strtotime('1 days')) . "'";
    return $where;}
    add_filter('posts_where', 'filter_where');?>
    <?php query_posts('order=ASC&cat=1&showposts=1');?>
    <?php if(have_posts()):?>
    <?php while(have_posts()):the_post();?>
    <a href="<?php the_permalink();?>">
    
    <div class="news_post">
    <div class="post_title">
    <span class="date"><?php the_time('m.d.Y');?></span>
    <p><?php if(mb_strlen($post->post_title)>20)
    { $title= mb_substr($post->post_title,0,20) ; echo $title. "...";
    } else {echo $post->post_title;}?></p>
    </div>
    
    <?php  $postImage = getPostImage($post);
    if($postImage == null){
    }else{
    echo '<div class="img_flame"><div class="first_img"><img class="first_img" alt="'.$postImage["alt"].'"width="100%" src="'.$postImage["url"].'" /></div></div>';} ?>
    <div class="post_content">
    <p><?php echo mb_substr(strip_tags($post-> post_content), 0, 50); ?></p>
    <p class="more-link">>>READ MORE</p >
    </div>
    </div></a>
    <?php endwhile; ?>
    
    <?php wp_reset_query();?>
    
    <?php else: ?>
    <?php global $post;
    $myposts = get_posts('p=10');
    foreach($myposts as $post) : setup_postdata($post); ?>
    <a href="<?php the_permalink();?>">
    
    <div class="news_post">
    <div class="post_title">
    <span class="date"><?php the_time('m.d.Y');?></span>
    <p><?php if(mb_strlen($post->post_title)>20)
    { $title= mb_substr($post->post_title,0,20) ; echo $title. "...";
    } else {echo $post->post_title;}?></p>
    </div>
    <?php  $postImage = getPostImage($post);
    if($postImage == null){
    }else{
    echo '<div class="img_flame"><div class="first_img"><img class="first_img" alt="'.$postImage["alt"].'"width="100%" src="'.$postImage["url"].'" /></div></div>';
    } ?>
    
    <div class="post_content">
    <p><?php echo mb_substr(strip_tags($post-> post_content), 0, 50); ?></p>
    <p class="more-link">>>READ MORE</p >
    </div>
    </div></a>
    <?php endforeach; ?>
    <?php wp_reset_postdata(); ?>
    
    <?php endif; ?>
    
    <?php remove_filter('posts_where', 'filter_where');?>
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「未来の投稿を表示、未来の投稿が無い場合は、特定の記事を表示する方法」には新たに返信することはできません。