contactform7のセレクトボックスにカスタム投稿のタイトルを自動取得

contactform7のセレクトボックスにカスタム投稿のタイトルを自動取得する方法。
header.phpに以下を記述
記述箇所はjquery以下になるので、基本的にはwp_headより下になる。

if( is_page('10')): ?>
<script type='text/javascript'>
    jQuery(function(){

        <?php $my_query = new WP_Query('&post_type=recruit'); ?>
        <?php if ($my_query->have_posts()) : ?>
            <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

                jQuery('#select-title').append(jQuery('<option>').attr({ value: '<?php the_title(); ?>' }).text('<?php the_title(); ?>'));

            <?php endwhile; ?>
        <?php endif; ?>

    });
</script>
<?php endif; ?>

軽い解説

header.php

最初の is_page(’10’) はページIDを指定。
contactform7のショートコードが記載されている場所になります。
※例では固定ページに埋め込んでる場合


次にこのrecruitをカスタム投稿の任意のスラッグに変更。

コンタクトフォームの画面に移動

フォーム内で
[select job id:select-title]
と指定

こんな感じになると思います。
recruitだのjobだのは採用ページを作る際によく使うであろう想定なので使い回しがききやすい、と思います。

  • このエントリーをはてなブックマークに追加
0

contactform7でセレクトボックス使用時「お選びください」などの文言を表示させる

ディレクトリ階層が以下の場所を開く

wp-content > plugins > contact-form-7 > modules
の中の
select.phpを開くと87行目あたりから

	if ( $include_blank || empty( $values ) ) {
		array_unshift( $labels, '---' );
		array_unshift( $values, '' );
		$shifted = true;
	} elseif ( $first_as_label ) {
		$values[0] = '';
	}

と表示されているので、この’—‘ を書き換えるだけ

	if ( $include_blank || empty( $values ) ) {
		array_unshift( $labels, 'お選びください' );
		array_unshift( $values, '' );
		$shifted = true;
	} elseif ( $first_as_label ) {
		$values[0] = '';
	}

  • このエントリーをはてなブックマークに追加
0