投稿確認メッセージに投稿URLを含める方法

Post Submissionアドオンを利用していて、確認メッセージに投稿 URL を組み込むことに興味がありますか?PHPスニペットとWPFormsスマートタグで簡単に実現できます。

スマートタグは確認メッセージ内で使用可能なクイックリファレンスリンクとして機能します。WPFormsには便利なタグがたくさん用意されています。利用可能なオプションの詳細については、こちらのドキュメントを参照してください

しかし、WPFormsで使用するスマートタグを自分で作成できることをご存知ですか?このチュートリアルでは、3つの新しいカスタムスマートタグを作成する方法を紹介します:

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

これらのタグは、フォームを送信したばかりのユーザーに投稿への直接リンクを提供することを可能にし、確認メッセージの中で非常に重要な役割を果たします。

フォームの作成

投稿アドオンを使ってフォームを作成する際にヘルプが必要な場合は、こちらのチュートリアルをご覧ください

このチュートリアルの目的のために、ブログ記事投稿フォームテンプレートに付属しているデフォルトフィールドでフォームを作成済みです。

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

投稿の有効化

次に、投稿投稿を有効にする必要があります。これを行うには、フォームビルダーの設定タブをクリックし、投稿投稿を選択し、投稿投稿を有効にします。

フォームビルダーの設定にある投稿投稿タブで投稿を有効にし、投稿ステータスをレビュー保留に設定します。

投稿するユーザーがWordPressにログインしておらず、投稿のステータス(投稿後)を下書きまたはレビュー保留に設定している場合、確認メッセージから投稿のURLを表示しようとすると404ページが表示されます。

確認メッセージに投稿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番号などの保持する情報の定義を設定しています。

つ目の関数は、これらのスマートタグを処理し、タイトル、パーマリンク(URL)、投稿タイプID番号を割り当てます。

これで、{投稿タイプURL }、{投稿タイプタイトル}、{投稿タイプID}を使うときはいつでもまたは{投稿タイプ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: これはEメール通知に使えますか?

A:現在のところ、Eメール通知内で使用することはできません。

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

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