ドキュメント

開発者向けに、Default Permalink のフック・オプション・カスタマイズ方法をまとめています。

スラッグ置換の仕組み

wp_unique_post_slug フィルター(優先度 10、引数 4 個)にフックし、以下の条件をすべて満たす場合のみスラッグを置換します。

  1. オプション df_enable の値が "Enable" である(設定画面で有効化済み)
  2. 投稿 ID が 0 でない(wp_insert_post の直接呼び出しで ID 未確定の場合は post-0 の衝突を防ぐためスキップ)
  3. 投稿タイプが置換対象である(オプション未保存の場合は全公開投稿タイプが対象)
  4. スラッグが正規表現 /(%[0-9a-f]{2})+/ にマッチする(URL エンコードされたマルチバイト文字を含む)
  5. 投稿の post_name が空である(ユーザーがスラッグを明示指定していない)

置換時には post meta _dp_slug_replaced に新しいスラッグを保存し、編集画面での通知に使用します(通知の表示後に削除されます)。

オプション

オプション名説明
df_enable"Enable" / ""機能の有効・無効
df_slug_formatpost_type / date / randomスラッグ形式(デフォルト: post_type
df_post_types投稿タイプ名の配列置換対象の投稿タイプ。未保存(v1.4 より前からのインストール)の場合は全公開投稿タイプが対象

default_permalink_slug フィルター

生成されたスラッグは default_permalink_slug フィルターを通るため、テーマや他のプラグインから形式を自由にカスタマイズできます。

/**
 * 生成されるスラッグを「item-{投稿ID}」形式に変更する例
 *
 * @param string $slug      生成されたスラッグ。
 * @param int    $post_id   投稿 ID。
 * @param string $post_type 投稿タイプ。
 */
add_filter( 'default_permalink_slug', function ( $slug, $post_id, $post_type ) {
	return 'item-' . $post_id;
}, 10, 3 );

アンインストール

プラグインを削除すると uninstall.php が実行され、上記のオプションはすべて削除されます。変換済みの投稿スラッグは投稿データそのものなので、そのまま残ります。

ソースコード

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