• 解決済 youcancan

    (@youcancan)


    phpに詳しい方教えてください。
    カテゴリーページに記事を載せるのは下記のページのおかげで出来たのですが、これに新着記事3件のタイトル横にnewを付けたいのですが、うまくいきません。
    http://emiac-works.com/coding/pre-get-posts-code-snipet/

    下記のような記事を見つけ、
    http://wp3.jp/2011/12/25/wordpress-new/

    いろいろと試してみたのですが、うまくいかず、どなたか助けていただけないでしょうか。
    よろしくお願い致します。

    今現在のコードは下記です。

    archive.php

    <div class="wn-item">
    <span class="entry-date">
    <time class="wn-date" datetime="<?php the_time('c'); ?>"><?php the_time(get_option('date_format')); ?></time></span>
    <div class="wn-article"><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></div> </div><!-- wn-item --> <?php endwhile; else : ?>
    <p>記事がありません</p>
    <?php endif; ?>
    </div>

    functions.php

    /* ページ送り */

    function change_posts_per_page($query) {
     if( is_admin() || ! $query->is_main_query() ){
         return;
     }
     /* カテゴリーページの表示件数を30件にする */
     if ( $query->is_category(‘abc') ) {
         $query->set( 'posts_per_page', '30' );
         $query->set( 'category_name','abc' );
         return;
     }
    }
    add_action( 'pre_get_posts', 'change_posts_per_page' );

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック投稿者 youcancan

    (@youcancan)

    ご回答ありがとうございます。

    CSS nth-childというのがあるのですね!
    試してみたのですが、非常に便利なcssなのですが、デザイン上思っていたことができなさそうなので、
    できればコードで解決できれば、嬉しいです。
    よろしくお願い致します。

    カテゴリーアーカイブページのループ内で、先頭のページのときだけ、何番目の記事(投稿)か数えて3までならnewを出力すればよいのでは?(カテゴリーアーカイブページはいつでも新着順に表示するのが必須条件ですが)

    newとかは、装飾的なものなので一般的には、該当する投稿のpost_class()等にクラスを追加して、CSSで処理するとかがいいんじゃないかと思いますが、PHPでやりたいという事なら、

    functions.phpに

    function my_add_new( ){
    	static $count;
    
    	if( $count < 3) {
    		echo '<span class="post-new">New</span>';
    	}
    	$count++;
    }

    と関数を作って、

    <div class="wn-item">
    <span class="entry-date"><?php my_add_new();?>
    <time class="wn-date" datetime="<?php the_time('c'); ?>"><?php the_time(get_option('date_format')); ?></time></span>
    <div class="wn-article"><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></div> </div><!-- wn-item --> <?php endwhile; else : ?>
    <p>記事がありません</p>
    <?php endif; ?>
    </div>

    <span class="entry-date"><?php my_add_new();?>という感じで追加すると動くと思います。

    ページネーションがあると、このままだと次のページでも表示されるので、

    https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/is_paged

    等で、条件分岐してください

    トピック投稿者 youcancan

    (@youcancan)

    ご教授いただいたのに返信が遅くなりゴメンなさい。
    (返信しようとしたのですが、なぜかこの質問(ページ)がなくなっていて、削除されたのかと思っていたのですが、復活していました。)

    nobitaさん
    ありがとうございます。
    やってみたのですが、うまく動作しませんでした。
    おそらくphpを理解していない私の原因だと思います。

    できればphpでやってみたかったのですが、CSS nth-childで対応できましたので、
    今回はcssでやることにしました。
    本当にありがとうございました。

    mina35997

    (@mina35997)

    突然失礼します。
    http://wphack.tokyo/?p=205&lang=en
    この方法が参考になるのではないでしょうか。
    英語で書かれていますが、分かると思います。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「記事の一覧に「new」を付けたい。」には新たに返信することはできません。