web関連
【wordpress】contactform7でテキストボックスに記事タイトルを出力したい
記事内それぞれにフォームを埋め込む時にフォームのテキストボックスに記事タイトルを最初っから入れかったときの備忘録
contactform7側に仕込むフォームタグ
テキストボックス内に記事のタイトルを自動で入るようにするためのタグ
[text p_title readonly]
readonly
は書き換えできないようにするための記述
functions.phpに書く記述
function wpcf7_get_post_title( $tag ){
// contactform7のフォームが無い時の処理?
if( !is_array( $tag ) ) return $tag;
//タグ名が「p_title」の時にinputのvalueに記事タイトルを出力
if( $tag['name'] == 'p_title' ) {
$title = get_the_title();
$tag['values'] = array( $title );
}
return $tag;
}
add_filter( 'wpcf7_form_tag', 'wpcf7_get_post_title' , 11 );
ここから個人的なメモ
$tag
でcontactform7のフォームで使われているタグを拾ってきてるみたい
調べている時にglobal $post
使ってる人もいたけど普通に記事タイトル読み込めてるんだよねぇ…
いまいちどこでどういう時に使うのか理解できない
その記事では記事IDを$post->ID
で拾ってきていたけどget_the_ID
で拾えるから、拾えない時なんかで使うんかなぁ?
参考
wordpressで重要なグローバル変数$postの中身の説明
global $post
を使った書き方に変えてみたけどこれでも一応動いた
function wpcf7_get_post_title( $tag ){
global $post;
if( !is_array( $tag ) ) return $tag;
if( $tag['name'] == 'p_title' ) {
$title = $post->post_title;
$tag['values'] = array( $title );
}
return $tag;
}
add_filter( 'wpcf7_form_tag', 'wpcf7_get_post_title' , 11 );
メインループやサブループでthe_post()
使われてるけどglobal $post
と関係あるのかしら?
後で、調べないと…
参考
以上