WordPress 技術系

投稿時に自動でタイトルをつける

投稿日:2017年10月26日 更新日:

カスタム投稿で「レビューの投稿」を作ったのですが、
レビュー投稿時のオペレーションとしては、

①機種を選ぶ
②レビュアーを指定
③評価記事を書く
④投稿

のような流れで投稿をしたいのです。

レビューの投稿にタイトルなんていらないのですが、
何も書かないと、後々で識別が面倒そうだったので、
タイトルを自動でつけれないか試してみました。

やりたい事は、カスタムフィールドの情報からタイトルを生成する事です。

ネットでそれらしい記事を漁ってみたのですが、
記事の更新時は動くけど、初回投稿時は動かない・・・
みたいな症状でうまく動かなかったので、
私なりにアレンジしたところ何とか実装できました。

私と同様に自動でタイトル作成がうまくいかない方は参考にしてみてください。

 

プログラムサンプル

ごちゃごちゃ説明する前に、動いたコードです(笑)

いろいろネットの記事を参考にしながら作らせていただきました。
コメントを多めに振ったつもりなので、何やってるかはコメントを見ていただけると。

私が今回作ったのは、
カスタムフィールドの「対象機種」+「レビュアー」を混ぜたものをタイトルにする
というものです。

こちらが投稿画面です。

ちなみに「対象機種」も「レビュアー」もカスタムタクソノミーから選択するタイプのものです。

このまま投稿を押した場合にタイトルに「機種B_ヤマネコ」
入ってくれたら今回の目標は達成です。

コード中の‘fld_model’は「対象機種」、‘fld_reviewr’は「レビュアー」の
カスタムフィールド名です。

get_post_meta()で取得した$fld_model_id$fld_reviewr_idには
ターム名ではなく、IDが入っています。※「25」とかID番号が入っている

タームのIDを元にget_term_by()を使用して「機種B」や「ヤマネコ」という表記を取得できます。

で、機種名+レビュアーを変数に入れて、$postを更新する
という流れですね。

そして、タイトルが空のまま「公開」するとこの通り。
期待通りの結果が得られました。

 

 

私の環境で上手くいかなかった例

ネットで紹介されていたもので、私の環境下ではうまくいかなかったものを紹介します。

うまく動作する方と私の環境の違いがなんなのか分からないので、
お心当たりのある方は、アドバイス頂けるとありがたいです。

最初はこんな感じのを試してみて、
「お、なんかそれっぽくできた!!」
と喜んだのですが・・・

初回投稿時に「global $post」Nullになっていて
「$post->post_type」のとこでエラーになるんですね。
※エラーといってもデバッグモードでエラーメッセージが出るだけなので、
 デバッグモードでなければ動いているように見えます。

一度公開してから、記事を更新したら「global $post」にデータが入っておりエラーは出ないんですよ。

ただエラーは出ないのですが、更新されるデータが前回の$postのデータを元に
タイトルが生成
されており、意図した挙動ではありませんでした。

おそらく、「title_save_pre」のタイミングでは、今回保存予定のカスタムフィールドの値は
まだ$postに反映されてないのかなーと勝手に解釈しています。

うまくいった例の’wp_insert_post’のアクションは記事のセーブが終わった後に
通るアクションなのでうまく動くのかと思われます。
記事のセーブ後なので「wp_update_post()」を使用してタイトル書き換えをする必要があるということですね。

ブログランキング・にほんブログ村へ
スポンサーリンク

-WordPress, 技術系
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

投稿時に自動でタームの追加

※ぱち系の記事ではありません。  私がレビューを投稿しやすいようにWordPressと奮闘する記事です。 以前記事にしたとおり、レビューのカスタム投稿を追加しました。 その中で「機種」「レビュアー」の …

var_dump結果をファイルに出力する

タイトルの自動生成をやろうと思った時に、 意図通りに処理が動かず、困っていた時にとても重宝したのが「var_dump」のファイル出力でした。 「var_dump」は変数の情報を画面(ブラウザ)に表示さ …

レビュー投稿用のカスタム投稿をつくってみた

※ぱち系の記事ではありません。  私がレビューを投稿しやすいようにWordPressと奮闘する記事です。 ▼レビューを投稿するときに、固定のフォーマットで投稿できるようにしたい ・レビューする機種名 …