冒険島MAGAZINEを開発していて苦戦したこと 後編

目次

今回も苦戦したことまとめていきます。
よろしくお願いします!

ページネーション

【仕様】
TOPやカテゴリで表示している内容については、
カテゴリ(PC)の場合は、
query_posts('posts_per_page=27’)

これを記載することで最大表示件数のクエリを27件にする
つまり1ページに27件表示する

【問題】

①各カテゴリのページネーション(ページ下の1,2,3~7などのページを移動するボタン)が2ページ以降も同じものが表示される。

②また、何ページ目以降かが404Not Foundと表示されてしまう

【原因】

① wp_reset_query(クエリのリセット)を処理の最後に行なっていなかったため、同じクエリが同じページで処理されていた

②1ページに投稿する最大表示件数をposts_per_pageで無理やり弄ったこととSP画面で管理側での記事の表示件数が下回ったことで、表示件数が合わなくなり404となる

要約すると、管理側10 > posts_per_page 6などの管理側が大きく、posts_per_pageが小さい場合に発生するようであった。

【解決策】

①wp_reset_queryを記載することでクエリをリセットできるので記載

②管理側での記事表示件数を1とすることで、posts_per_pageが下回る状況にしないようにすれば404Not Foundとならない
→調べても同じような不具合がある方がおらず、かなり苦戦しました。。笑

スライダー

Jqueryに依存しない、swiperを使用した。
【仕様】
スライダーの1枚目は、カバーの記事が表紙となっている。
2~5枚目以降は、カバー、未分類、開発ブログ、技術以外のカテゴリの新着が表示される仕様である。

【問題点】

①IOSのChromeでのみ、スライダーの自動遷移がカクついていた
→Safariでは、この不具合は出なかった。。

②リリース何日か前まで全てのカテゴリの新着記事がスライダーに出る対象となっていた。
開発ブログや未分類カテゴリなどを出さないような変更があった

【解決策】

①swiperの画像をめくるスピードの初期値だと300ms=0.3秒であった。
これをspeed: 650(0.65秒に)変更することで、カクつきを減らすことができた。

②get_posts内のサイドにcat=-(カテゴリ番号)を記載する

カテゴリーの英語名の自動設定化

インタビューであればinterview、開発ブログであればTech blog
などカテゴリーが新たに追加された際に、トップやカテゴリーページで日本語名 | 英語名と出力しようと考えていたが、自動で設定するには何が最適か考えていた。
【案】
・配列で対応したものをifで条件分岐させ表示

・DeepL APIを使用し、日本語名を英語名に変換し変数化し表示

・wordpress管理画面のカテゴリー追加画面の説明部分に英語名追加

【問題点】

・配列で対応したものをifで条件分岐させ表示
→php内で分岐させ一致した配列の要素を表示する。この場合、新しいカテゴリが追加されるたびに、コード上にも英語名を追加しないといけないため、自動で処理を行うことができない。
・DeepL APIを使用し、日本語名を英語名に変換し変数化し表示
→DeepL APIで日本語名を英語名に変換して表示する。
この場合、翻訳の精度、API keyなど
英語名を取得するだけのために工数が増える、翻訳なので表示したい英語名と違う場合があるなど開発のコスパが悪いので、断念

【解決策】

・wordpress管理画面のカテゴリー追加画面の説明部分に英語名追加
→これが一番自動設定で簡単であったので採用した。カテゴリーの説明欄が今まで使用されていなかったので、ここに英語名をあらかじめ設定して、category_description()で説明欄の英語名取得。category_description()は使用時にpタグで出力されるため、
function.phpに

を記載し、pタグを除去。

以上になります。
ありがとうございました!