WordPressの投稿を公開する際にカスタムフィールドを自動作成することは、特に大規模なサイトを管理している場合やカスタム機能に取り組んでいる場合に、時間を節約し、反復作業を減らすための強力な方法です。
特定の種類のコンテンツを公開するたびに同じカスタムフィールドを手動で追加する代わりに、プロセスを自動化して一貫性を保つことができます。
私たちは長年にわたり多くのWordPressプロジェクトに携わり、シンプルなブログから高度な機能を備えた複雑なサイトまで、あらゆるものを構築してきました。その過程で、ワークフローをより速く、より効率的にするための、今回のような実用的なヒントをたくさん得てきました。
このチュートリアルでは、WordPressで投稿公開時にカスタムフィールドを自動的に追加する方法をステップバイステップでご紹介します。

なぜカスタムフィールドを自動的に追加するのか?
カスタムフィールド を使用すると、投稿にその他の情報を追加できます。この情報は、ウェブサイトに表示したり、非公開にしたり、テーマやプラグインで使用して WordPressウェブサイト の機能を拡張したりできます。
カスタムフィールドには、創造的な使い方がたくさんあります。役立つアイデアのリストは、カスタムフィールドのヒント、トリック、ハックガイドにあります。
場合によっては、投稿が公開されるたびにカスタムフィールドが自動的に作成されるようにしたい場合があります。これは、WordPressに機能を追加して、単なるブログ以上のものとして使用できるようにする場合に特に役立ちます。
例えば、WPBeginnerではギャラリーサイトを作成する際にこの方法を使用しました。ギャラリーに投稿された各アイテムの短いURLを保存したかったのです。そのため、各投稿が公開されたときに短いURLを保存するためのカスタムフィールドを自動的に作成しました。短いURL
このような自動化は、開発者が時間を節約し、エラーを減らし、手作業を少なくして、より強力なWordPressサイトを構築するのに役立ちます。
さて、設定方法を見ていきましょう。
投稿公開時にカスタムフィールドを自動的に追加する
この方法では、カスタムコードスニペットをテーマのfunctions.phpファイルに追加します。テーマファイルを編集する際は、小さな間違いでもウェブサイトが壊れる可能性があるため、経験の浅いユーザーには推奨しません。
代わりに、このチュートリアルでは WPCode プラグインの使用方法を紹介します。

WPCodeを使用すると、テーマのfunctions.phpファイルを編集することなく、WordPressにコードスニペットを簡単に追加できます。すべてのコードスニペットを1つのセントラル画面から管理することもできます。
WordPressにコードを追加するのが初めての場合は、WordPressでWeb上のコードスニペットをコピーして貼り付ける方法に関するガイドを確認して、詳細を確認してください。
開始するには、無料のWPCodeプラグインをインストールして有効化する必要があります。ヘルプが必要な場合は、WordPressプラグインのインストール方法に関するチュートリアルをご覧ください。
注意: WPCode の無料バージョンには、WordPress にカスタムコードを追加するために必要なものがすべて含まれています。スケジュールされたスニペット、コンバージョンピクセルなどの高度な機能については、WPCode Pro にアップグレードできます。
プラグインが有効化されると、WordPressの管理バーに「コードスニペット」という新しいメニュー項目が追加されます。それをクリックし、次の画面で「新規追加」ボタンを押してください。

これで、WPCode のスニペットライブラリが表示されます。
ここから、「カスタムコードを追加(新規スニペット)」オプションに移動し、その下にある「+カスタムスニペットを追加」ボタンをクリックします。

次に、画面に表示されるオプションのリストから、コードの種類として「PHPスニペット」を選択します。

その後、スニペットにタイトルを付け、以下のコードをコピーして「コードプレビュー」ボックスに貼り付けます。
add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post', 'add_custom_field_automatically');
function add_custom_field_automatically($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
add_post_meta($post_ID, 'field-name', 'custom value', true);
}
}
「field-name」と「custom value」を、カスタムフィールドに使用したい実際の名前と値に置き換える必要があります。

次に、「挿入」セクションまでスクロールします。ここで、「自動挿入」メソッドを選択したままにする必要があります。

自動挿入メソッドを使用すると、スニペットは適切な場所に自動的に挿入され、実行されます。
完了したら、「非アクティブ」から「アクティブ」にスイッチを切り替え、次に「スニペットを保存」ボタンをクリックする必要があります。

スニペットがアクティブになると、投稿が公開されるたびにカスタムフィールドが作成されます。
このチュートリアルで、WordPressで投稿公開時にカスタムフィールドを自動追加する方法を学べたことを願っています。また、WordPressでループの外にカスタムフィールドを表示する方法を学んだり、ウェブサイトを成長させるための必須のWordPressプラグインのリストを確認したりすることもできます。
この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterやFacebookでもフォローできます。


イジー・ヴァネック
複数のユーザーがいるウェブサイトで、記事が公開されたときに著者のプロフィールが自動的に挿入されるようにしたい場合、このガイドを使用できますか?つまり、カスタムフィールドを使用して、記事を書いたユーザーに応じて、著者の短いプロフィールが先頭に挿入されるようにできますか?このように自動化したいと考えています。現在、Elementorを使用してこれを行っており、各著者はテンプレートを保存しており、先頭に手動で挿入する必要があります。
WPBeginnerサポート
お探しのものは、以下のガイドで説明している著者プロフィールボックスです:
https://www.wpbeginner.com/wp-tutorials/how-to-add-an-author-info-box-in-wordpress-posts/
管理者
Sateesh Raghuwanshi
「ad_system」という名前のカスタム投稿タイプにこのアクションを追加する必要があります
nayan
投稿にカテゴリIDをpost_metaテーブルに追加したいのですが。function add_custom_field_automatically($post_ID)関数をどのように調整すれば対応できますか?
ありがとう
クリス
投稿作成時にカスタムフィールドを追加するのではなく、管理画面にデフォルトでカスタムフィールドを表示するにはどうすればよいですか?
puanthanh
カスタム投稿タイプに追加されていません
編集スタッフ
上記のコードにはカスタム投稿タイプに関連するものは何も含まれていないことに気づくでしょう。投稿とページの「コンテンツタイプ」にのみ追加されます。したがって、カスタム投稿タイプ用のフックを指定する必要があります。
管理者
puanthanh
返信ありがとうございます。このコードについて手伝っていただけますか。
add_action(‘publish_page’, ‘add_custom_field_automatically’);
add_action(‘publish_post’, ‘add_custom_field_automatically’);
add_action( ‘save_post’, ‘add_custom_field_automatically’ );
ユーザーメタフィールドが変更された場合、カスタムフィールド値を自動的に削除し、新しい値で更新したい
ブライアン
投稿の公開/更新時に非表示のカスタムフィールドを追加しようとしていますが(フィールド名の前に「_」を付けて)、なぜか投稿を2回更新しないとwp_postmetaエントリがデータベースに書き込まれません。
プライオリティを変更したり、他のアクションフック(draft_to_publish、edit_postなど)を試したりしましたが、違いはないようです。
何かアイデアはありますか?
編集スタッフ
OttoのトランジェントAPIを使ったトリックを使っていますか?
管理者
Boba
Thanks for including the source link
編集スタッフ
Thanks for providing an amazing tip
管理者
ダニエル・スアレス
ありがとう、Otto、また素晴らしいヒントですね!
ピエト
カスタム投稿タイプでも機能しますか?
add_action(‘publish_custom-post-typ-name’, ‘add_custom_field_automatically’); のようなものです
Otto
はい、できます。
この手法の注意すべき欠点は、公開済みの投稿が編集された場合、このフックが再度トリガーされることです。そのため、メタを追加したり、更新したり、ユースケースに応じて最適な処理を行ったりする前に、メタを確認する必要があります。
コードが最初の公開時にのみトリガーされるようにしたい場合は、transition_post_statusフックを使用できます。このフックは次のように機能します。
add_action('transition_post_status','example',10,3); function example($new, $old, $post) { // $new は新しい投稿ステータスです ('publish') // $old は古い投稿ステータスです ('draft') // $post は完全な投稿オブジェクトです (IDには $post->ID などを使用してください) }そして、ここでは次のようなチェックを行うことができます。
if ($new == 'publish' && $old != 'publish')
コードが実際に公開ステータスに移行したときにのみ使用されるようにするには、それらが何であったかに関係なく。このフックは、{$status}_{$post-type}フックと同じタイミングでトリガーされるため、それらの操作は基本的に同じです。
ピエト
Ottoさん、ありがとうございます。少し試してみます!
編集スタッフ
明確にしてくれてありがとう、Otto。
管理者
Vivek Parmar
この便利なヒントをありがとう。以前はカスタムフィールドを使用する際に手動で作業する必要がありました。これで自動的に行われます。貴重な時間を節約してくれてありがとう