• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WordPress PCとスマホで表示を切り替える)

WordPressでPCとスマホで表示を切り替える方法

このQ&Aのポイント
  • PCとスマートフォンで記事の一覧表示を切り替えるためのコードを追加したが、結果が真っ白になってしまった。
  • 参考サイトを参考にfunctions.phpにis_mobile()関数のコードを追加し、トップページのコードを改造した。
  • コードのどこかに問題がある可能性があり、Sublime Textでの確認も行っているが見つからない。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

おそらく、最後のendif;がないせいじゃないかなと思います。 <?php if( is_mobile() ): ?>  スマホ用のPHP <?php else: ?>  パソコン用のPHP <?php endif; ?> ifで始まったら、最後はendif;でifを終わらせないとエラーになります。 ただ、単に記事の件数を変えるだけなら、もう少しシンプルなソースにできるかと思います。 <ul> <?php if( is_mobile() ) { $posts_per_page = 3; // スマホの件数 } else { $posts_per_page = 5; // パソコンの件数 } $latest_posts = get_posts( array( 'posts_per_page' => $posts_per_page, // 表示する記事の数 'category_name' => '投稿ID', // 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post ); // 以下略(改造前のコードとおなじです) ?> こんなふうにすれば、一番上に5行追加するだけで分岐できます。foreach():も一回書くだけでいいので、すごくシンプルです。 なお、PHPを編集されるのであれば、WordPressのデバッグモードを有効にすることをおすすめします。 FTPソフトでWordPressがインストールされたディレクトリ(フォルダ)にアクセスすると、《wp-config.php》というファイルが見つかります。このファイルを開くと、76行目あたりに《define('WP_DEBUG', false);》という記述があります。ここの《false》を《true》にして、上書き保存してください。スペルミスなどがあると真っ白になるので、ちゃんと確認してから保存します。 define('WP_DEBUG', true); ここをtrueにすると、何かあったときに画面が真っ白になるのではなく、どこの何行目で書き方を失敗したのか、しっかりとエラーメッセージを表示してくれるようになります。エラーの場所を一目で把握できるようになるため、PHPを編集するうえで非常に役立ちます。

参考URL:
https://wpdocs.osdn.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86
nkmyr
質問者

お礼

ありがとうございます。 <?php endif; ?>の漏れでしたか。原因はわかりました。 ご指示のコードでやってみましたところうまく表示できました。 こっちの作成したコードはムダなコードでした。 シンプルなコードで感服しました。

その他の回答 (1)

回答No.1

>PCでは記事一覧5件、スマホでは3件表示するようにしたいです。 それだけなら、こんなにだらだら長く書くより 教科書書きなら <?php if ( is_mobile() ) : ?> <?php $posts_per_page=5; ?> <?php else: ?> <?php $posts_per_page=3; ?> <?php endif; ?> ~以後ソースは同じ~ ただ、IFの処理がどちらも同じ変数にアクセスしているのに、 ELSEとENDIFを使うのは効率が悪いので、効率を求めるなら、 <?php $posts_per_page=is_mobile()? 5:3; ?> のみでもOKです。 後は、今まで通り ``` $latest_posts = get_posts( array( 'posts_per_page' => 5, // 表示する記事の数 ``` ここを ``` 'posts_per_page' => $posts_per_page, // 表示する記事の数 ``` にするだけ。 ソースが1本化され、余計なバグや問題が出なくて楽ですよ。 要するに、違いが出る部分の「違い」だけを変数に入れて コールするって概念の方が、楽ですよ! 大本のソースから、2行しか変化していないコミットになりますからね!

nkmyr
質問者

お礼

ありがとうございます。 2つともテストしてみましたが、スマホでは変わりませんでした。 シンプルなコードにできるってことは勉強になりました。

関連するQ&A