公開権限のないユーザが新規固定ページや投稿で「レビュー待ち」にステータス変更するとスラッグ名が消える

      2014/06/26

会社では記事を執筆する人と、それをチェックして公開だけ行う管理職に分けて WordPress を運用する場合があります。このとき、公開権限のない投稿者や寄稿者が内容を作成し、レビューアーに渡すためにステータスを「レビュー待ち」として保存すると、スラッグ名が消えてしまいます。

スラッグ名が空の場合は、デフォルトではタイトルを引っ張ってくるので、タイトルが日本語の場合は困ってしまいます。

この現象に悩まされてたんですが、Wordpress の仕様であることがわかりました。

[解決済み] スラッグを決めるのは公開者?

WordPress 3.5.1 でも仕様は変更されていないようです。推奨されないですが、運用上困るのでシステム ファイルを書き換えて対応しました。

wp-includes/post.php 内の wp_insert_post() 関数にある以下の行をコメントアウトすることで解消できます。ただし、システム ファイルを操作することになるので、Wordpress のバージョンアップごとにコードの修正が必要です。

	// Don't allow contributors to set the post slug for pending review posts
	if ( 'pending' == $post_status && !current_user_can( 'publish_posts' ) )
		$post_name = '';

 - PC, Web