シェフWordPressには独自の情報(メタデータ)を追加できる「カスタムフィールド」という便利な機能があります。SEOプラグインもその機能を利用したもので、説明文(ディスクリプション)やキーワードといった情報を投稿者が任意で追加できるようにしています。このカスタムフィールド、投稿者が自分で「名前」を決めて値を設定することもできますが、先程のSEOプラグインのようにテーマやプラグイン側で用意することも多いです。僕の自作テーマ「4536」でも、プラグインなしでSEO対策をできるようにしたり、301リダイレクトできるようにしたり、canonicalを設定できるようにしたり、このカスタムフィールドをけっこう活用しているんですが、中にはカスタムフィールドを追加できないケースがありました。それは、プラグインで生成されたカスタム投稿タイプです。プラグインで生成された場合の対応が難しいなぜ、プラグインが生成したカスタム投稿タイプにカスタムフィールドを追加するのが難しいかというと、追加するにはカスタム投稿タイプの「名前」を指定しなければいけないからです。bbpressのフォーラムページにカスタムフィールドを追加する場合は以下のようなコードになります。'add_custom_fields');「forum」の部分が名前ですね。ここを「custom_post_type」のように指定できれば話は簡単なんですが、それはできません。テーマの開発者ができる対応は基本的に以下の2つになりますが、どちらも良い方法とは言えません。親テーマのfunctions.phpに手作業で追加していくユーザー(オリジナルテーマを使っている人)にやり方を教えて子テーマのfunctions.phpに追加してもらうすべてのカスタム投稿タイプに一括で追加する方法この問題を解決するために僕が考えたこと。それは「すべてのカスタム投稿タイプの名前を配列で取得してループ処理させること」です。そんな関数きっとあるよね!と思って探してみたんですが、案の定「get_post_types」という関数を発見しました。get_post_types関数の使い方すべてのカスタム投稿タイプに追加する場合は以下のようなコードになります。'add_custom_fields');テーマ側で作成したカスタム投稿タイプはもちろん、プラグインが生成したものにもすべてカスタムフィールドが追加されます。利用シーン「アーカイブページを含めてすべてのページをnoindexにしたい」なんて場合はrobots.txtを使った方が簡単ですが、「この投稿だけnoindexにしたい」みたいな場合は今回の方法を使うと便利です。Managerのダウンロードページにリダイレクトを設定したり。参考にしていただければ嬉しいです:)カテゴリー:カスタマイズシェフこのサイト「Fantastech」を運営している人。WordPressテーマ「4536」の開発中にインプットした情報などを発信中。上に表示された文字を入力してください。「ページを開けません。Jobsの導入方法や注意点などカスタムデータ属性でCSSフレームワークを作ろうきたぞ、国内初の流体シェイプ国内初となる流体シェイプをデザインに取り入れたWordPressテーマ「4536」を公開しました。