AD5 WordPress Lab

All In One SEO Pack が重いので、停止して独自実装してみる

All In One SEO Pack が重いので、停止して独自実装してみる

WordPress サイトのSEO対策用プラグインとして鉄板の「All In One SEO Pack」ですが、これがなかなか重いんです。

WordPress の表示速度が遅い、と相談を受けた場合、大抵 All In One SEO Pack が入っており、P3 等で重いプラグインのモニタリングをしても、必ずこいつが上位に入ってきます。

非常に高機能なプラグインなので仕方ないのですが、実際のところ、投稿ごとの title 、keywords 、description の設定くらいしか使っていない、という方も多いのではないでしょうか。

それなら、いっそ停止して独自実装してしまった方が、高速化した分 SEO にも有利に働くかもしれません。

All In One SEO Pack と互換性をもたせつつ、高速化する

まずは、投稿の編集ページに、タイトルやキーワードの入力欄を追加します。

All In One SEO Pack は、タイトル、キーワード、ディスクリプションを、それぞれ

_aioseop_title
_aioseop_keywords
_aioseop_description

という meta_key のカスタムフィールドに保存しています。

これと同じ meta_key でカスタムフィールドを作って保存するようにすれば、これまで All In One SEO Pack で設定してきた内容を失うことなく、独自実装に切り替えることができます。

以下がメタボックスを表示、保存するための実装です。

ほぼ WordPress.org のサンプルそのままです。いっそ Advanced Custom Field で設置しても良いでしょう。

上記の例ではデフォルト投稿と固定ページのみに設置していますが、

冒頭の定数 POST_TYPES を編集すれば、その他のカスタム投稿タイプにも対応できます。

 

続いてフロント側です。

やることは基本的に2つだけで、pre_get_document_title フィルタを使ってタイトルタグを書き換える(※)処理と、

wp_head アクションにフックして、メタタグ類を書き出す処理です。

せっかくなので OGP 関連のタグもきっちり吐き出しておきましょう。

色々と場合分けしていますが、物足りない方はもっと条件分岐を増やしてください。

特に、アーカイブ系のページが雑なので、カテゴリーやその他のタクソノミーにもメタボックスを追加して、keywords と description 入れられるようにすると尚いいですね。

また、日付アーカイブとか投稿者アーカイブとかキーワード検索とかは考慮していないので、使用している場合はIF文を増やしてください。

canonical_url をどうするかは悩ましいです。サイト構成によっては変更が必要かも。

まぁこだわり始めるとキリがないのですが、これで少なくとも All In One SEO Pack ほど重くならずに、同程度の処理ができるでしょう。

※ WP ver4.1 以上で テーマが title-tag をサポートしている(header.php 等に <title> タグを直書きしていない)ことが前提です。

※ get_the_post_thumbnail_url() を使ってるので、ver4.4以上前提です。
ver4.4未満の場合は wp_get_attachment_image_src() とかを使った昔ながらの方法に書き換えてください。

 

あとは、管理画面、フロントのそれぞれで、これらのクラスをインスタンス化するだけ。

これでだいぶ重いのがマシになった・・・はず!

Plugin Outbound Posts – 記事リスト内に外部リンクを挿入

Outbound Posts – 記事リスト内に外部リンクを挿入

投稿のリストの中に、見た目は他の投稿のリンクと同じように、外部リンクを差し込みたい、なんてことはありませんか? こんな風に・・・ Outbound Posts は、このような記事風の外部リンクを簡単に投稿できるプラグインです。 このプラグインを有効化すると、各記事の投稿画面に、「外部リンク」という欄が現
Column WordPressが重い・遅いときは、まず「プラグインのスリム化」をしよう 〜調査篇〜

WordPressが重い・遅いときは、まず「プラグインのスリム化」をしよう 〜調査篇〜

WordPressが重い、遅い!? WordPressのサイトが重い、読み込みが遅いので高速化したい、という相談をよく受けます。 本シリーズでは、実際の高速化の実例を元に、事前調査から対応までの手順をご紹介します。 WordPressが遅い原因 経験上、WordPressが遅い原因の80%以上はプラグインの過剰使用です。 プラグイン
Plugin AD5 LOYALTY – WordPressで会員制サイト作成

AD5 LOYALTY – WordPressで会員制サイト作成

当サイトで使用しているプラグインです。 WordPressのサイトを簡単に会員制サイトにすることができます。 ショートコードで簡単に会員登録フォーム、ログインフォームが設置可能で、全ての投稿に対して、会員用コンテンツと非会員用コンテンツを設定することができます。 ショートコートで簡単に会員登録フォーム
Column WordPressテーマ・プラグイン開発時のセキュリティ対策

WordPressテーマ・プラグイン開発時のセキュリティ対策

WordPressのテーマやプラグインを開発、カスタマイズする際には、脆弱性を生まないよう、セキュリティ対策を十分に考慮する必要があります。 CSRF対策 管理画面内外を問わず、WordPressにリクエストを送信するフォームや、データを更新するAJAXを実装する場合には、CSRF対策を施しましょう。 リクエストを送信する
Plugin Mobile Sticky Footer – スマホ用固定フッター

Mobile Sticky Footer – スマホ用固定フッター

Mobile Sticky Footerは、スマートフォンサイトに簡単に固定フッターを設置できるWordPressプラグインです。 選べる3タイプのレイアウト 複数ボタンタイプは2ボタンから5ボタンまで設定可能。 お問合せフォームやSNSへのリンクのほか、電話ボタンの設置も可能です。 リアルタイムプレビューつきの直感的な設定画
Column WordPressにメールフォームを自力で実装する

WordPressにメールフォームを自力で実装する

WordPressにメールフォームを実装する優秀なプラグインは沢山ありますが、 ほとんどのプラグインは非開発者向けに導入しやすさを重視して作られているため、 例えば入力項目を動的にするなど、少し複雑なことをしようと思うと、 詰んでしまいます。 WordPressにはメール送信処理やデータの保存などを簡単に実装できる
Plugin WP LOYALTY Checkout add-on – クレジットカード決済

WP LOYALTY Checkout add-on – クレジットカード決済

当サイトで使用しているプラグインです。 AD5 LOYATYのアドオンとして、決済機能を提供します。 決済サービスとして、カード決済手数料が3.0%〜と安く、個人事業主でも利用可能なPAY.JPと連携できます。 (別途PAY.JPのアカウントが必要です。)
Column WordPressのテーマファイル構成を本気出して考えてみた

WordPressのテーマファイル構成を本気出して考えてみた

エンジニアの端くれとして、たかがWordPressテーマであっても、綺麗なモジュール設計がしたいわけです。 そこで、以前作ったサイトのテーマをモチーフに、テーマファイルを再設計してみました。 対象にしたサイトは、ユーザーが会員登録し、PDFコンテンツを投稿でき、ダウンロード結果を集計できるなど、そこそこ高機
Column WordPressサイトにパンくずリストをプラグインなしで実装する

WordPressサイトにパンくずリストをプラグインなしで実装する

意外と大変なパンくずリスト WordPressサイトに限らず、SEOの面でも重要視されるパンくずリスト(breadcramb nav)。 WordPressでガチで実装すると意外と面倒ですよね。 個別投稿ページだけでも、 A. 標準投稿 HOME > 親カテゴリ > 子カテゴリ > 投稿名 B. 固定ページ HOME > 親ページ >
Column WordPressのプラグインを開発するときに知っておきたいこと

WordPressのプラグインを開発するときに知っておきたいこと

WordPressのプラグインを開発する際に、技術的な実装手法以外の面で知っておくべきことをまとめました。 ライセンスについての理解 WordPressはオープンソースのソフトウェアですが、オープンソース=どう使っても自由、というわけではありません。 WordPressは、GPLライセンスのもとで配布されています。 GPL
 
ログイン
メールアドレス
パスワード
会員登録
お名前
メールアドレス
パスワード
購入手続き
カード番号
有効期限 (MM/YY)
/
セキュリティコード (CVC)