プラグイン不要!WordPress高速化とセキュリティ強化方法
WordPressは基本的にプラグインで機能を拡張する設計ですが、プラグインを使用しない運用も可能です。プラグインは便利である一方、使用することで読み込み速度やセキュリティに影響が出たり、互いの干渉で不具合が発生したりします。今回は、WordPressをプラグインに頼らずに運用するための方法とそのメリットについて解説します。
目次
コードの追加による機能拡張
プラグインなしでWordPressの機能を拡張する方法として、functions.phpにコードを追加することが考えられます。以下の例では、内部リンクやアマゾンの商品リンク、パンくずリストの表示、構造化データの実装を行うコードを紹介します。
内部リンク機能
functions.phpに追加するコード
function internal_link($atts) {
// ショートコードの属性からIDを取得
extract(shortcode_atts(array('id' => ''), $atts));
// 指定されたIDの投稿タイトルとURLを取得
$title = get_the_title($id);
$url = get_permalink($id);
// サムネイル画像の有無をチェック
if (has_post_thumbnail($id)) {
// サムネイル画像がある場合はそれを表示
$thumb_img = get_the_post_thumbnail($id, 'thumbnail', array('loading' => 'lazy', 'width' => '120', 'height' => '90'));
} else {
// サムネイルがない場合は代替画像を表示
$thumb_img = '<img src="代替画像のフルパス" width="120" height="90">';
}
// リンクHTMLを作成
$linkhtml = '<div>
<div>関連ページ</div>
<a href="' . $url . '">
<div>' . $thumb_img . '
<div>
<div>' . $title . ' | <nobr>ブログタイトル</nobr></div>
<div>グログのアドレス</div>
</div>
</div>
</a>
</div>';
return $linkhtml;
}
add_shortcode('blog-link', 'internal_link');
ショートコードで投稿記事IDを指定します。
[blog-link id="123"]
アマゾンの商品リンク
コードが長いので下記のブログ内リンクをご覧ください。
パンくずリストの表示
functions.phpに追加するコード
function breadcrumb() {
// ホームリンクのHTML
$home = '<div><a href="' . home_url() . '">ホーム</a>';
global $post;
// 投稿ページ(single)のパンくずリスト
if (is_single()) {
$post_ID = get_the_ID();
echo $home;
// カテゴリーリンクを表示
$br_categories = get_the_category();
if ($br_categories) {
echo '<a href="' . get_category_link($br_categories[0]->term_id) . '">' . $br_categories[0]->name . '</a>';
}
// 現在の投稿タイトルを表示
echo '<div>' . get_the_title() . '</div>';
}
// トップページ(front page)の場合
if (is_front_page()) {
// トップページの時は何も表示しない
// アーカイブページのパンくずリスト
} elseif (is_archive()) {
echo $home;
the_archive_title('<div>', '</div>');
// 固定ページ(page)のパンくずリスト
} elseif (is_page()) {
$parent_id = $post->post_parent;
$parent_title = get_post($parent_id)->post_title;
// 親ページがある場合は親ページへのリンクを表示
if (is_page() && $post->post_parent) {
echo $home;
echo '<a href="' . get_permalink($parent_id) . '">' . $parent_title . '</a>';
the_title('<div>', '</div>');
} else {
// 親ページがない場合はホームリンクのみ表示
echo $home;
the_title('<div>', '</div>');
}
// 検索結果ページのパンくずリスト
} elseif (is_search()) {
echo $home;
echo '<div>「' . get_search_query() . '」の検索結果</div>';
// 404エラーページのパンくずリスト
} elseif (is_404()) {
echo $home;
echo '<div>404 ページが見つかりません</div>';
}
// パンくずリストのコンテナを閉じる
echo '</div>';
}
パンくずリストを表示させたい箇所に下記のコードを追加する。
<?php breadcrumb() ;?>
構造化データの実装
コードが長いので下記のブログ内リンクをご覧ください。
セキュリティ対策
プラグインなしの運用でも、セキュリティ対策は重要です。以下では、Cloudflareやホスティングサービスの機能を活用してセキュリティ対策を行う方法を紹介します
Cloudflareの活用
Cloudflareは、IPアドレスによるアクセス制限やレスポンスヘッダーの変更などで、セキュリティを強化します。例えば、管理画面(ログインページ)へのアクセスを自分のIPアドレスに限定することで、不正アクセスを防止できます
また、レスポンスヘッダーにセキュリティ設定を追加することで、ブラウザからのアクセスが信頼できるものかを判断できます。例えば、「X-Content-Type-Options: nosniff」を追加することで、クロスサイトスクリプティング攻撃を防止できます
ホスティングサービスのセキュリティ機能
多くのホスティングサービスには、定期的なバックアップ機能やマルウェアスキャン、ファイアウォール設定が含まれており、これらを利用することでプラグインなしでも一定のセキュリティ対策が可能です。以下は代表的なセキュリティ機能です。
- 自動バックアップ機能:データの紛失時に迅速に復元が可能
- マルウェアスキャン:サイトが不正アクセスを受けた場合、異常なファイルを検出して通知。
- ファイアウォール:悪意あるアクセスからサーバーを保護。
お問い合わせページの外部サービス活用
お問い合わせページは、プラグインを使うことで簡単に作成可能ですが、外部のフォーム作成サービス(例: フォームメーラー)を利用する方法もあります。フォームメーラーは、特定のIPアドレスを除外する設定やHTMLコード方式でフォームが表示できるため、プラグインに頼らない方法として優れています。
WordPressをプラグインなしで運用することで、ページ速度やセキュリティを向上させることが可能です。プラグインを使わない場合、多少のPHP知識が必要ですが、公開されているコードや生成AIを活用することで、簡単に対応できるようになります。
最後までお読みいただき、誠にありがとうございます。


