• taaaaaaacan

    (@taaaaaaacan)


    ターム一覧ページで、最新記事1件を非表示にする方法がわかりません。

    //最新記事ID取得
    function get_latest_blog_id($cat_id=null) {
      global $wpdb;
      if(empty($cat_id)) {
        // 最新記事idの取得
        $row = $wpdb->get_row("SELECT ID FROM $wpdb->posts WHERE post_type = 'posttype' AND post_status = 'publish' ORDER BY post_date DESC");
      } else {
        // カテゴリを指定した最新記事idの取得
        $cat_id = intval($cat_id);
        $row = $wpdb->get_row("SELECT p.ID FROM $wpdb->posts p LEFT JOIN $wpdb->term_relationships r ON p.ID=r.object_id WHERE p.post_type = 'posttype' AND p.post_status = 'publish' AND r.term_taxonomy_id = '$cat_id' ORDER BY p.post_date DESC");
      }
      return !empty( $row ) ? $row->ID : '0';
    }

    こちらのファンクションを使い、各タームの最新記事IDを取得可能にしていますが、

    
    add_action('pre_get_posts','my_pre_get_posts');
    function my_pre_get_posts( $query ) {
      if(is_admin() || ! $query -> is_main_query()) return;
      if ($query -> is_tax()) {
        $tax_slug = get_query_var('taxonomy');	
        $term_slug = get_query_var('term');	
        $term = get_term_by("slug",$term_slug,$tax_slug);
        $id = $term->term_id;
        $newBlog = get_latest_blog_id($id);
        $query -> set('posts_per_page', '3');
        $query->set('post__not_in',array($newBlog) );
      }
    }

    タームページで上記記述が効きません。
    やりたいことは、現在いるタームページの最新記事1件を省いたloopです。offsetでの処理を試しましたが、ページャーがバグってしまいました。

    こちら可能でしたら、ご教授願います。
    記述はfunctions.phpに書いています。

    • このトピックはtaaaaaaacanが8年前に変更しました。
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • CG

    (@du-bist-der-lenz)

    カレントページの除外とは違うのですね

    トピック投稿者 taaaaaaacan

    (@taaaaaaacan)

    シングルページではなくて、タームの一覧ページですね。
    アクセスしているタームページの一覧から、そのタームの最新記事を削除したい感じです。

    CG

    (@du-bist-der-lenz)

    理解しました。試行します。

    トピック投稿者 taaaaaaacan

    (@taaaaaaacan)

    ありがとうございます!
    よろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)

トピック「タームページのカスタム」には新たに返信することはできません。