WordPressの記事公開時にカスタムフィールドの値を更新する方法
こんにちは、webエンジニアのゾノ( @ozonosho )です。
今日のブログではWordPressの記事公開時にカスタムフィールドの値を更新する方法を紹介したいと思います。
たとえば、各記事のView数用のカスタムフィールドを作り、記事を表示するたびにそのカスタムフィールドの値を更新するという作りのサイトは多いと思います。ブロガー向けの有名テーマなどもそういった仕様で作られています。
そういった仕様の場合、記事ページが誰かに閲覧されてはじめてカスタムフィールドの値が生成されるので、誰かに閲覧されるまではカスタムフィールドをkeyにしてget_postsなどの関数を利用しようとしても記事を抽出できません。
僕の運営するサイトでもそういった仕様でview数をカウントしているため、記事公開時にカスタムフィールドの値を更新したいと思って今回の処理を加えました。
WordPressの記事公開時にカスタムフィールドの値を更新する方法
実装は簡単です。下記のコードをfunctions.phpに記述してください。
function new_post_create_cf($new_status, $old_status, $post) { if($new_status == 'publish') { $key = 'カスタムフィールド名'; $value = get_post_meta($post->ID, $count_key, true); if($value=='') { $value = '挿入したい値'; delete_post_meta($post->ID, $key); add_post_meta($post->ID, $key, $value); } } } add_action('transition_post_status', 'new_post_create_cf', 10, 3);
たとえば、僕のサイトの場合は各記事のview数用に「post_views_count」というカスタムフィールドを用意しているので、下記のコードをfunctions.phpに記述しています。
function new_post_create_view($new_status, $old_status, $post) { if($new_status == 'publish') { $count_key = 'post_views_count'; $count = get_post_meta($post->ID, $count_key, true); if($count=='') { $count = 0; delete_post_meta($post->ID, $count_key); add_post_meta($post->ID, $count_key, $count); } else { $count++; update_post_meta($post->ID, $count_key, $count); } } } add_action('transition_post_status', 'new_post_create_view', 10, 3);
これで管理画面から記事を公開すると同時に「post_views_count」に0がセットされます。
(すでに値がある場合には+1されます)
おわりに
以上、今回の記事ではWordPressの記事公開時にカスタムフィールドの値を更新する方法を紹介させていただきました。
当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。