- ベストアンサー
WordPressでPCとスマホで表示を切り替える方法
- PCとスマートフォンで記事の一覧表示を切り替えるためのコードを追加したが、結果が真っ白になってしまった。
- 参考サイトを参考にfunctions.phpにis_mobile()関数のコードを追加し、トップページのコードを改造した。
- コードのどこかに問題がある可能性があり、Sublime Textでの確認も行っているが見つからない。
- みんなの回答 (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を編集するうえで非常に役立ちます。
その他の回答 (1)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>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行しか変化していないコミットになりますからね!
お礼
ありがとうございます。 2つともテストしてみましたが、スマホでは変わりませんでした。 シンプルなコードにできるってことは勉強になりました。
お礼
ありがとうございます。 <?php endif; ?>の漏れでしたか。原因はわかりました。 ご指示のコードでやってみましたところうまく表示できました。 こっちの作成したコードはムダなコードでした。 シンプルなコードで感服しました。