ページネーションが表示されない・リンクが取得できない・表示件数を変えたいなどの処理で苦戦したまとめ
今回の実装で困った箇所と問題
JS
- 画面の高さを取得してスライダーのイメージを内包してる要素のサイズを変えるとspの時にダサい
- スライダーで
<``>
ボタンを押した後の処理で、自動再生を再開始させるのは手間がかかる - フルードイメージは元画像の画質を考慮してmaxをそれ以上に広げないようにしないと画像荒くてダサい
今回の対処策
1は、JS内で読み込みの条件分岐をする or CSSのメディアクエリと!importantで力業
2は、ボタンを押された時点で自動再生を諦める
3は、<img>
そのものにmaxの指定と外包している要素にメディアクエリで適切な単位を指定
WordPress/PHP
原因と解決策、対処
1の、一ページ当たりの投稿数が反映されない場合はまずWP管理管理画面で設定可能なデフォルトの設定が反映されていないか確認すること。
また、カスタム投稿を使用している場合は、is_archive()
がパラメーターを受け付けないため、適宜別の方法でif文の条件分岐を使う。
posts_per_page
に件数を指定する必要がある。
また、それでも適応しない場合はクエリを書き換えるか、別にクエリを作る必要がある。 今回は、いくつか用意したカスタム投稿タイプのパターンの中で一部のアーカイブページのみクエリを書き換えて、デフォルトのクエリと応用して対応した。
2の、ページネーションはURLの設定をリライトで書き換えた。リンク先の取得で困った。
実装したかったのは、http://domain/slag/pagetitel/page/num/
で別のURLで書き換えたリンク先が404になったり、デフォルトのURLですら404になったり苦戦した。
この場合、万が一うまく行かない場合はサーバー側の問題であるときもあるので、違う環境で試して本番でだけ表示がされないような場合はサーバーも疑う。
あと、サーバー側にもキャッシュがあるので、クリアしてみる必要もあるかも(この場合、プラグインを使用するのがいいが動かなくなる可能性があるためバックアップと状況で見定める必要があるのを念頭に置いておくこと)
リライトと、/page/num/
リダイレクトを禁じて対処した。調べてみて試したけど、リダイレクトの処理は不要かも。
3の、function.phpで条件分岐の為に使ったis_archive()
がパラメータを受け付けなかったため、is_post_type_archive()
を使用して、スラッグを指定して対応した。
逆に、適応できるスラッグとできないスラッグが出たためデフォルト設定をうまく使用し要件を満たしたので原因解明まで至っていない。
この辺は、設計の甘さが関係しているかと推測されていて、コンテンツの呼び出しに使った関数やループの兼ね合いだと考えている。
ページネーションを呼び出すためにposts_per_page
を書き換えて使用したページではうまく適用されたが、適用したかったテンプレートファイルに同じようなコードを使用しても表示されなかったため、そもそもposts_per_page
が書き換えられていない印象を受けた。
次に同じことで困ったら、原因はこの辺かなと思う。
今後の対策
今回の傾向から考えるにWordPressでつまずくときは、大体ループ処理。 クエリの仕様と、関数がパラメーターを受け付けているのかなど、WordPress Codex見ながら疑う方がいいかもしれない。
反省点としては、最初にもう少し設計を考えた方が良かったかも。