ご注意!

この記事には PHP コードが含まれており、開発者を対象としています。このコードは便宜上提供していますが、コードのカスタマイズやサードパーティの開発についてはサポートを提供していません。

追加のガイダンスについては、WPBeginner の カスタムコードの追加方法に関するチュートリアル を参照してください。

閉じる

確認メッセージに投稿サブミッションの投稿URLを含める方法

投稿送信アドオンを利用中で、投稿URLを確認メッセージに含めたいとお考えですか?PHPスニペットとWPFormsのスマートタグを使えば簡単に実現できます。ここでは、その手順をステップバイステップでご案内します。

スマートタグは、確認メッセージ内で使用できるクイック参照リンクです。WPFormsには、便利なようにあらかじめ用意された多数のタグがあります。利用可能なオプションの詳細については、こちらのドキュメントを参照してください

しかし、WPFormsで使用するために独自のスマートタグを作成できることをご存知でしたか?このチュートリアルでは、3つの新しいカスタムスマートタグの作成方法をデモンストレーションします。

  • 投稿タイトル
  • 投稿タイプID番号
  • 投稿URL

これらのタグは、確認メッセージ内で非常に役立ちます。これにより、フォームを送信したばかりのユーザーに投稿への直接リンクを提供できます。

フォームの作成

投稿送信アドオンを使用してフォームを作成する方法についてサポートが必要な場合は、こちらのチュートリアルを確認してください

このチュートリアルの目的のため、ブログ投稿送信フォームテンプレートに付属するデフォルトフィールドを使用してフォームを作成しました。

投稿送信を受け付けるフォームを作成する

投稿送信の有効化

次に、投稿送信を有効にする必要があります。これを行うには、フォームビルダー内で設定タブをクリックし、投稿送信を選択して、スイッチを投稿送信を有効にするに切り替えます。

フォームビルダーの設定にある投稿送信タブで投稿送信を有効にし、投稿ステータスを「レビュー待ち」に設定します

投稿を送信するユーザーがWordPressサイトにログインしていない場合、かつ投稿のステータス(送信後)が下書きまたはレビュー待ちに設定されている場合、確認メッセージから投稿URLを表示しようとすると404ページが表示されることに注意してください。これは、WordPressにログインしている場合のみ下書き投稿を表示できるためです。

確認メッセージへの投稿URLの追加

フォームの設定が完了したら、確認タブをクリックします。

投稿URLを表示するだけでなく、実際にクリック可能なリンクにしたいので、エディターウィンドウのテキストタブをクリックして、メッセージを追加できます。

メッセージのテキストタブで、確認メッセージ内にすでに含まれているスマートタグを使用して投稿送信メッセージを追加します

メッセージと投稿URLのテキストとHTMLを次のように入力します。

<p>Thanks for the submission! 
If you'd like to see a preview of your post titled 
<strong>{submitted_cpt_title}</strong> for the post type ID of 
<strong>{submitted_cpt_id}</strong>, just 
<a href="{submitted_cpt_url}">click here</a>.</p>

<p>It will be reviewed shortly.</p>

フォームを送信した訪問者に、投稿タイプID番号投稿タイトル、および確認メッセージ内のクリック可能なリンクとなる投稿URLを通知するメッセージを追加しています。

メッセージを追加したら、フォームの保存をクリックして、次のステップに進む準備をしてください!

投稿送信URLスマートタグの作成

これで、これらすべてをまとめるコードスニペットをサイトに追加する時間です。コードスニペットをサイトに追加する方法についてサポートが必要な場合は、こちらのチュートリアルを参照してください

/**
 * Add Smart Tags to the Post Submission confirmation messages
 *
 * @link   https://wpforms.com/developers/how-to-include-post-submissions-post-url-in-the-confirmation-message
 *
 */

// This function sets up the names of the Smart Tags we will be using.
function wpf_dev_register_smarttag( $tags ) {

	// Key is the tag, value is the tag name.
	$tags[ 'submitted_cpt_id' ]    = 'Submitted Post Type ID';
	$tags[ 'submitted_cpt_url' ]   = 'Submitted Post Type URL';
	$tags[ 'submitted_cpt_title' ] = 'Submitted Post Type Title';

	return $tags;
}

add_filter( 'wpforms_smart_tags', 'wpf_dev_register_smarttag', 10, 1 );

//This function will process the Smart Tags so that we can 
//use them inside the confirmation message and email notifications
function wpf_dev_process_smarttag( $content, $tag ) {

	if ( empty( $_POST[ 'wpforms' ][ 'entry_id' ] ) ) {
		return $content;
	}

	/** @var WPForms_Entry_Handler $entry */
	static $entry;

	if ( empty( $entry ) ) {
		$entry = wpforms()->entry->get( (int) $_POST[ 'wpforms' ][ 'entry_id' ], [ 'cap' => false ] );
	}

	if ( empty( $entry->post_id ) ) {
		return $content;
	}

	switch ( $tag ) {

		case 'submitted_cpt_id':
			$content = str_replace( '{submitted_cpt_id}', (int) $entry->post_id, $content );
			break;

		case 'submitted_cpt_url':
			$content = str_replace( '{submitted_cpt_url}', esc_url( get_permalink( (int) $entry->post_id ) ), $content );
			break;

		case 'submitted_cpt_title':
			$title   = get_post_field( 'post_title', $entry->post_id );
			$content = str_replace( '{submitted_cpt_title}', esc_html( $title ), $content );
			break;
	}

	return $content;
}

add_filter( 'wpforms_smart_tag_process', 'wpf_dev_process_smarttag', 10, 2 );

最初の関数では、投稿のタイトル、URL、ID番号などの情報を保持するスマートタグの名前と定義を設定しています。

2番目の関数はこれらのスマートタグを処理し、タイトル、パーマリンク(URL)、投稿タイプのID番号を割り当てます。これにより、これらのスマートタグを確認メッセージで使用できるようになります。

これで、{Submitted Post Type URL}{Submitted Post Type Title}、または{Submitted Post Type ID}スマートタグを使用すると、フォーム送信が成功した後、これらの値が自動的に割り当てられ、訪問者は確認メッセージに追加されたクリックはこちらリンクを簡単にクリックして、提出された下書き(または完全に公開された投稿)に移動したり、投稿ID投稿タイトルなどの他の情報を表示したりできるようになります。

これで、ユーザーは確認メッセージ内の投稿URLリンクをクリックして、自分の投稿を確認できます。

これで完了です!さらにカスタムスマートタグを作成しますか?カスタムスマートタグの作成方法のチュートリアルをご覧ください。

参照フィルター

よくある質問

Q: 投稿URLを新しいウィンドウ/タブで開くことはできますか?

A: もちろんです!リンクを新しいタブで開きたい場合は、次のようにHTMLリンクを作成してください。

<p>Thanks for the submission! 
If you'd like to see a preview of your post titled 
<strong>{submitted_cpt_title}</strong> for the post type ID of 
<strong>{submitted_cpt_id}</strong>, 
just <a href="{submitted_cpt_url}" target="_blank">click here</a>.</p>

<p>It will be reviewed shortly.</p>

Q: メール通知で使用できますか?

A: 現在、メール通知内での使用はできません。

Q: これらのスマートタグをフォーム内で使用できますか?

A: いいえ、投稿IDとURLはフォームが送信されるまで実際に割り当てられないため、フォーム送信前にこれらを使用することはできません。