2021年11月13日土曜日

投稿タイトルをカスタムフィールドから自動設定する - WordPress

参照リンクが消えたので転載

//投稿タイトルをカスタムフィールドから自動設定する

function auto_review_title( $post_id, $post ) {

// カスタムフィールドの値を取ってくる

// $fld_institute_id = get_post_meta($post_id, 'tec_institute', true);


$fld_organizer_id = tribe_get_organizer($post_id);

$fld_ws_id = get_post_meta($post_id, 'tec_ws', true);

// $fld_director_id = get_post_meta($post_id, 'tec_director', true);

// $fld_seats_id = get_post_meta($post_id, 'tec_number_seats', true);

// $ID = get_the_ID();

// 「新規追加」を押した時点でここを通ってしまい、

// その時はカスタムフィールドの値が取ってこれないので、

// それを弾く為にempty()で中身があるか確認している

// if( !empty( $fld_institute_id ) and !empty( $fld_ws_id ) ){

// if( !empty( $fld_model_id ) and !empty( $fld_reviewr_id ) and !empty( $fld_seats_id ) ){

// if( !empty( $fld_organizer_id ) and !empty( $fld_ws_id ) and !empty( $fld_organizer_id ) ){

if( !empty( $fld_organizer_id ) and !empty( $fld_ws_id )){

if( $post->post_type == 'tribe_events' ){

// $fld_model_idには機種名ではなく、タームIDが入っている

// ターム名がほしいので、まずget_term_byでタームを取ってくる

//$term1 = get_term_by( 'term_id', $fld_model_id, 'tec_director' );

//$term2 = get_term_by( 'term_id', $fld_reviewr_id, 'tec_ws' );


// そのあとにnameでアクセスする

// $title = $fld_model_id . ' - ' . $fld_reviewr_id;

// $title = $fld_model_id . ' - ' . $fld_organizer_id;

// $title = $fld_organizer_id . ' - ' . $fld_ws_id . ' - ' . $fld_director_id;

$title = $fld_organizer_id . ' - ' . $fld_ws_id;

// $title = $fld_organizer_id . ' - ' . $fld_institute_id . ' - ' . $fld_ws_id . ' - ' . $fld_director_id;

// $title = $fld_model_id . ' - ' . $fld_reviewr_id . ' - ' . $fld_organizer_id. ' ' . $fld_etc_id;

// $title = $fld_model_id . ' - ' . $fld_reviewr_id . ' - ' . tribe_get_organizer();

// $title = $fld_model_id . ' - ' . $fld_reviewr_id . ' - ' . $fld_seats_id;

//$title = $term1->name . '_' . $term2->name;

// 「wp_update_post」実行時にもこの関数に通ってしまうため、一時的にフックを取る

remove_action( 'wp_insert_post', 'auto_review_title' );

// タイトルを更新

wp_update_post( array(

'ID' => $post_id,

'post_title' => $title

) );

// 「wp_update_post」の処理が終わったので、この関数を再度フックする

add_action('wp_insert_post', 'auto_review_title', 10, 2 );

}

}

}

add_action('wp_insert_post', 'auto_review_title', 10, 2); // 記事追加時のアクションにフック

//投稿タイトルをカスタムフィールドから自動設定する

1.

投稿してから更新すると

投稿タイトルが

テスト の時

更新すると

テストテスト

に2重投稿される問題があります。削除すれば消えます。

2.

パーマリンク設定が投稿名で、投稿タイトルををカスタムフィールド欄で反映させる場合、漢字入力しているとパーマリンクが漢字になります。アドレスをコピペして共有するときにエンコードされて長くなってしまいます。

0 件のコメント:

コメントを投稿

SWELL|サイトのタイトル を文字のままサイトロゴを追加する

WordPressのほとんどの(クラシック・ハイブリッド)テーマは サイトのロゴを画像で設置する機能がついています。しかしほとんどの場合、サイトのロゴを画像で設置すると 設定> 一般設定 >サイトのタイトル が サイトロ […] 投稿元: Microsoft Powe...