WordPressは便利なCMSですが、実際に制作を進めていると「なぜかうまくいかない」「思った通りに動作しない」といった問題に直面することが多々あります。本記事では、実際に遭遇したハマりポイントとその解決策を紹介します。
目次
ハマりポイント①: プラグインが作動しない
問題点
プラグインをインストールして有効化したものの、必要なスタイルシートやスクリプトが読み込まれず、機能が正常に動作しない。
原因
header.php に <?php wp_head(); ?> が、footer.php に <?php wp_footer(); ?> が記述されておらず、プラグインが必要とするリソース(CSSやJavaScript)が読み込まれなかったため。
解決策
- header.php の <head> タグ内に以下のコードを追加します。
<?php wp_head(); ?>
- footer.php の閉じタグ直前に以下のコードを追加します。
<?php wp_footer(); ?>
wp_head() と wp_footer() は、WordPress がプラグインやテーマに必要なリソースを適切に読み込むために必須の関数です。これらを欠かさずに記述することで、プラグインが正常に動作するようになります。
ハマりポイント ②: トップページの記事一覧が表示されない
問題点
トップページでカスタム投稿タイプの記事一覧を表示したいのに、記事が表示されない。
原因
メインループでカスタム投稿タイプの記事を取得しようとしたため。
解決策
メインループは通常表示されるページの投稿タイプに合わせた投稿を取得するもので、トップページでカスタム投稿タイプの記事一覧を表示するためには、WP_Query を使ってサブループを作成する必要があります。
以下のコードを front-page.php や該当のテンプレートファイルに追加してください。
<?php
$args = array(
'post_type' => 'カスタム投稿タイプ名', // カスタム投稿タイプのスラッグに変更
'posts_per_page' => 12, // 表示する投稿数
);
$the_query = new WP_Query($args);
?>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<!-- 記事がある場合の記述 -->
<?php endwhile; ?>
<?php else: ?>
<!-- 記事がない場合の記述 -->
<?php endif; wp_reset_postdata(); ?>
これにより、トップページにカスタム投稿タイプの記事一覧が表示されるようになります。
ハマりポイント③: WordPressアドレスの変更で管理画面にログインできなくなった
問題点
管理画面の「一般設定」からWordPressアドレスを変更した後、管理画面にログインできなくなった。
原因
WordPressアドレスを変更する際に記述ミスがあったり、変更が正しく反映されなかったため。
解決策
wp-config.php に以下のコードを追加し、URLを手動で指定します。
define('WP_HOME', 'http://example.com');
define('WP_SITEURL', 'http://example.com');
これにより、WordPressのURL設定を強制的に上書きできます。
また、データベースを直接修正する方法もあります。その場合、wp_options テーブル内の siteurl と home の値を変更します。phpMyAdminなどを使用して、正しいURLに修正してください。データベースを修正する場合はバックアップを取ることを推奨します。
ハマりポイント④: パーマリンク設定の変更で404エラーが発生
問題点
パーマリンクの設定を変更した後、サイト内のリンクがすべて404エラーになった。
原因
パーマリンク設定を変更後、WordPress内部でのリダイレクト設定が正しく更新されていないため。
解決策
- パーマリンク設定を再保存する
「設定」→「パーマリンク」のページにアクセスして、現在の設定をそのまま再保存します。この操作で、WordPressはリダイレクト設定を更新し、404エラーが解消されることがよくあります。 - .htaccess ファイルの確認
設定が更新されてもエラーが続く場合、.htaccessファイルに正しいリダイレクト設定が追加されているか確認します。もし設定が不足している場合、以下のコードを手動で追加します。# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
- キャッシュのクリア
キャッシュが原因で変更が反映されないことがあるため、ブラウザキャッシュや使用しているキャッシュプラグインのキャッシュをクリアします。
これで解決しない場合は、サーバー設定やリダイレクトの確認が必要です。
まとめ
WordPress制作では、ちょっとした設定ミスや仕様の理解不足でハマってしまうことがよくあります。今回紹介したハマりポイントと解決策が、開発の参考になれば幸いです。