Public Post Preview | 有効期限を長くする(※48時間から7日間など)カスタマイズ

WordPressのプラグイン「Public Post Preview」を利用すると記事公開前に確認用URLを発行しユーザー登録なしで記事内容を確認することが可能になります。

とても便利な機能のプラグインですが、確認用URLの有効期限がデフォルトで48時間に設定されているためタイミングや相手によっては短い場合もあります。

有効期限を変更するUIは備わっておりませんが、”ppp_nonce_life” というフィルターフックが用意されていますので、こちらに任意の有効期限(で指定)を設定することで長くすることが可能です。

Public Post Preview の有効期限を変更

functions.php 等に以下のコードを追加して有効期限を変更します。

/**
 * Public Post Preview の有効期限を変更
 */
function custom_ppp_nonce_life()
{
    // 7日間
    $lifetime = 60 * 60 * 24 * 7;

    // 7日間 ※定数 DAY_IN_SECONDS 利用
    // DAY_IN_SECONDS = 86400秒 ※1日
    $lifetime = DAY_IN_SECONDS * 7;

    // 
    return $lifetime;
}
add_filter('ppp_nonce_life', 'custom_ppp_nonce_life');

プラグイン “Public Post Preview Configurator” を利用する場合

Public Post Preview Configurator」という管理画面に有効期限変更用の機能を追加するプラグインも公開されています。

1” 以上の任意の数値を入力することで有効期限の変更が可能です。(※時で指定

上記プラグインも functions.php に設定してカスタマイズする方法と結果は変わりませんので、functions.php の編集に抵抗がない場合は、私は直接編集する方法を推奨します。

ちなみに以下プラグインコードの抜粋ですが、設定用のUIを提供してくれる以外は同じことをしています。


/**
 * \public-post-preview-configurator\public\class-public-post-preview-configurator.php
 */
class Public_Post_Preview_Configurator
{	
	...

	/**
	* Initialize the plugin by setting localization and loading public scripts
	* and styles.
	*
	* @since     1.0.2
	*/
	private function __construct() {
		add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
		add_filter( 'ppp_nonce_life', array( $this, 'configured_nounce_life' ) );
	}

	...

	/**
	* Sets a new ppp_nonce_life value based on a plugin option or returns the given value if no value has been configured.
	*
	* @since    1.0.2
	*/
	public function configured_nounce_life( $nonce_life ) {
		$expiration_hours = (int) get_option( 'ppp_configurator_expiration_hours' );
		if ( $expiration_hours && $expiration_hours > 0 ) {
			return 60 * 60 * $expiration_hours;
		}
		return $nonce_life;
	}
}

動作環境情報

"エックスサーバー" スタンダード(旧X10)
"PHP" 7.4.33
"MariaDB" 10.5
"WordPress" 6.1.1
"Public Post Preview" 2.10.0
"Public Post Preview Configurator" 1.0.3

関連記事

コメント

タイトルとURLをコピーしました