topとそれ以外の記事の投稿数を変更

Simplicityの特徴 › フォーラム › Simplicityについての質問 › topとそれ以外の記事の投稿数を変更

  • このトピックには8件の返信、1人の参加者があり、最後にゆうにより10年前に更新されました。
8件の返信スレッドを表示中
  • 投稿者
    投稿
    • #45107
      ゆう
      ゲスト

      こんにちわ

      お忙しいところすいませんが、ちょっとお聞きしたいことがあります。

      topページとそれ以外のページの記事の投稿数を変更することってできるのでしょうか??

      例えばtopページのみ投稿数10件、カテゴリーとアーカイブは投稿数20件という感じになんですが。

      ちょっとイマイチわからなかったので、よろしくお願いします。

    • #45112
      hidekichi
      ゲスト
      function set_posts_per_page_mobile( $query ) {
      	return;
      }
      function change_home_posts_per_page( $query ) {
      	// 管理画面、またはメインのループでない場合中断
      	if ( is_admin() || ! $query->is_main_query() ) {
      		return;
      	}
      	
      	if ( $query->is_home() || $query->is_mobile() && $query->is_home()) {
      		$query->set( 'posts_per_page', 5 );
      		return;
      	}
      	
      	if ( $query->is_archive() ) {
      		$query->set( 'posts_per_page', 10);
      		return;
      	}
      
      }
      add_action( 'pre_get_posts', 'change_home_posts_per_page' );

      うちのテスト環境では記事数が足りないので十分にテストできてませんが、こんな感じで条件を変えていけば任意の数にできるのではなかろうかと思います。子テーマfunctions.phpに書いて、

      参考: 条件分岐タグ | codex

      等で、調べつつ条件を色々試してみてください。
      但し、functions.phpに追記していくので、記入ミス(;抜け、タイプミス)等があると画面真っ白になる可能性があります。ftpでバックアップを取りながらすぐに元に戻せるような体制でカスタマイズされるのをオススメします。

    • #45114
      hidekichi
      ゲスト

      if ( $query->is_home() || $query->is_mobile() && $query->is_home()) {

      上記は、mobileにしてもpcにしてもis_homeは同じなので以下で良いかと思います。

      if ( $query->is_home() ) {
      	$query->set( 'posts_per_page', 5 );
      	return;
      }

      mobileの時に何かしたい場合はまたそれで設定すればよいかと。

    • #45124
      ゆう
      ゲスト

      いつも詳しくありがとうございます(^-^)

      スマホの方の分岐タグも併せて記述してみたんですが、
      これで間違ってないでしょうか??

      function set_posts_per_page_mobile( $query ) {
      return;
      }
      function change_home_posts_per_page( $query ) {
      // 管理画面、またはメインのループでない場合中断
      if ( is_admin() || ! $query->is_main_query() ) {
      return;
      }

      if ( is_mobile()) {

      if ( $query->is_home() ) {
      $query->set( ‘posts_per_page’, 6 );
      return;
      }

      if ( $query->is_archive() ) {
      $query->set( ‘posts_per_page’, 10);
      return;
      }

      } else {

      if ( $query->is_home() ) {
      $query->set( ‘posts_per_page’, 12 );
      return;
      }

      if ( $query->is_archive() ) {
      $query->set( ‘posts_per_page’, 15);
      return;
      }
      }

      }
      add_action( ‘pre_get_posts’, ‘change_home_posts_per_page’ );

    • #45125
      ゆう
      ゲスト

      あれ、コード入力するときってどうすればいいんですかね??
      code押すとエラーになってしまうのですが(^^;)

    • #45127
      ゆう
      ゲスト
      function set_posts_per_page_mobile( $query ) {
      	return;
      }
      function change_home_posts_per_page( $query ) {
      	// 管理画面、またはメインのループでない場合中断
      	if ( is_admin() || ! $query->is_main_query() ) {
      		return;
      	}
      
          if ( is_mobile()) {	
      
              if ( $query->is_home() ) {
      	$query->set( 'posts_per_page', 6 );
      	return;
              }
      
      	if ( $query->is_archive() ) {
      		$query->set( 'posts_per_page', 10);
      		return;
      	}
      
          } else {
      
              if ( $query->is_home() ) {
      	$query->set( 'posts_per_page', 12 );
      	return;
              }        
      
              if ( $query->is_archive() ) {
      		$query->set( 'posts_per_page', 15);
      		return;
      	}
          }
      
      }
      add_action( 'pre_get_posts', 'change_home_posts_per_page' );
    • #45128
      ゆう
      ゲスト

      何度もすいません。貼れました(^-^)

    • #45129
      hidekichi
      ゲスト

      > コード入力するときってどうすればいいんですかね?

      通常のwordpressの編集画面と同様に範囲選択してcodeボタンを押すだけです。

      function change_home_posts_per_page( $query ) {
          // 管理画面、またはメインのループでない場合中断
          if ( is_admin() || ! $query->is_main_query() ) {
              return;
          }
      
          if ( is_mobile()) {
      
              if ( $query->is_home() ) {
                  $query->set( 'posts_per_page', 6 );
                  return;
              }
      
              if ( $query->is_archive() ) {
                  $query->set( 'posts_per_page', 10);
                  return;
              }
      
          } else {
      
              if ( $query->is_home() ) {
                  $query->set( 'posts_per_page', 12 );
                  return;
              }
      
              if ( $query->is_archive() ) {
                  $query->set( 'posts_per_page', 15);
                  return;
              }
          }
      
      }
      add_action( 'pre_get_posts', 'change_home_posts_per_page' );

      エラーは無いようですし、これで試してみて表示に問題なければイケるんじゃないでしょうか?
      前にも書いたように、うちのテスト環境では投稿数が少ないので、ケースごとの数を確認できませんが、多分動作していると思います。mobileとPcでは確認できました。アーカイブもイケてるっぽいです。

      これらを元に、条件分岐次第で数は色々とできると思うので試し試しやって見る感じかと思います。

      ただ、以前ランダムに表示するサンプルを作った時に、リストアイテムの合計数が少しおかしい時がありました。これらはwordpressの問題かと思うので、ひとまず保留なんですが、利用される環境によって(トップを固定とか、ランダム表示とかその他諸々)で、若干ページャーがおかしくなるかもしれません。
      すでにあれからアップデートも2回ぐらいあったと思うので直っているかもしれないんですけどね。

    • #45130
      ゆう
      ゲスト

      了解です(^-^)

      ありがとうございました(^^♪

8件の返信スレッドを表示中
  • フォーラム「Simplicityについての質問」には新規投稿および返信を追加できません。
スポンサーリンク
アドセンス(大)
アドセンス(大)