[WP]WordPress2.5~2.6のパーマリンク編集エリアを常に表示させる

「ページスラッグ編集するエリアが見当たらないんだけど・・・・」っていう質問は本家でもよく書かれてます。
Wordpress2.5~2.6はタイトルの下にページスラッグ編集エリアが出ますが、多くの場合表示されてません。

普通はどうやったら出るようになるのかというと、オプション設定の「パーマリンク設定」で、
パーマリンク構造内に %postname%か%pagename% を含む場合のみ表示されるようになります。
表示されるタイミングは、タイトル入力後かオートセーブか何かで下書きが保存された時点ですが、
パーマリンク構造に%postname%が含まれてなければスルーされる。

で、コレではあまりに不便。
このブログは%postname%使わないリンク構造してるけど、ページスラッグも変更しときたいなァ・・・とか思って
常に表示させる方法を我々スタッフが総力を挙げて探しました。

その結果・・・無事見つけ出すことが出来ましたよ!

●Wordpress2.7について
ver2.7ではクイック編集でパーマリンク設定に拠らず変更が可能です。

以下、wordpressコアファイルと感動のご対面。
※テキストエディタはBOMなしUTF-8で保存できるものがベターだと思いますん

wp-admin/includes/にあるpost.phpを開く。
642行目付近にget_sample_permalink_html()という関数があるんで、次のように・・・

function get_sample_permalink_html($id, $new_title=null, $new_slug=null) {
	$post = &get_post($id);
	list($permalink, $post_name) = get_sample_permalink($post->ID, $new_title, $new_slug);

//ここからコメントアウト
//	if (false === strpos($permalink, '%postname%') && false === strpos($permalink, '%pagename%')) {
//		return '';
//	}
//ここまで
	$title = __('Click to edit this part of the permalink');
	if (strlen($post_name) > 30) {
		$post_name_abridged = substr($post_name, 0, 14). '…' . substr($post_name, -14);
	} else {
		$post_name_abridged = $post_name;
	}
	$post_name_html = '<span id="editable-post-name" title="'.$title.'">'.$post_name_abridged.'</span><span id="editable-post-name-full">'.$post_name.'</span>';
	$display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, $permalink);
	$return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink">' . $display_link . "</span>\n";
	$return .= '<span id="edit-slug-buttons"><a href="#post_name" class="edit-slug" onclick="edit_permalink(' . $id . '); return false;">' . __('Edit') . "</a></span>\n";
	return $return;
}

645行目くらいにあるif文をコメントアウトする。
見てわかるとおり、ここでパーマリンク構造を判断して該当しない場合にfalse送ってます。
つまりここが無ければ常に表示されるようになるわけです。

でもこれだと、表示はされるけどパーマリンク設定で%postname%が入ってないと編集が出来ない。
(ってことに公開後に気づいたスタッフ一同。反省)

そこで先ほどの関数のすぐ上にあるget_sample_permalink()をちょっと変える。
621行前後にパーマリンクをゲットしてるところがあるので

$permalink = get_permalink($post, true);

これをコメントアウトして変わりに

//$permalink = get_permalink($post, true);
$permalink = get_option('home')."/%pagename%";

こんな感じにしますと、全部

パーマリンク: https://tenderfeel.xsrv.jp/エンコード済み記事タイトル

みたいな感じになって、タイトル部分が編集可能になる。

とりあえずこの変更をすれば、パーマリンク構造に%postname%が入って無くても、
タイトルを入れた時点でページスラッグ編集エリアが出ると思います。
記事を公開した場合使用されるURLは設定したページスラッグではなく、パーマリンク構造設定に基づくURLです。

でも上の方法はかなり色々省略したアバウトな紹介なので、ここまで書いておいてアレなんですが
具体的にアレコレしたいならコアファイル編集するよりも、直接スラッグが操作できるHeadSpace2みたいなプラグイン使ったほうが早いんじゃないかと思いました。

我々スタッフとか書きましたが一人です。hehehe

「[WP]WordPress2.5~2.6のパーマリンク編集エリアを常に表示させる」への1件のフィードバック

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください