WordPressの投稿フォーマットのラベルのテキストを変更する方法

WordPressには、「投稿フォーマット」という機能があります。

デフォルトテーマを使っている時に、投稿画面で表示される以下のボックスのことです。

2015-03-27 16.51.31

 

上手く設定すると、リテラシーの高くないユーザーをサポートすることが可能です。

オリジナルテーマで、投稿フォーマットをONにするには、functions.phpに次のように記述します。

[functions.php]

add_theme_support( 'post-formats', array( 'aside', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video', 'audio' ) );

 

第2引数の配列で、表示するフォーマットを指定することが可能です。

それぞれの使い方は次のようになっています。

aside(アサイド)
通常タイトルなしで表示。Facebook の Notes のようなもの。

gallery(ギャラリー)
 画像ギャラリー。ギャラリーショートコードと添付画像を含む投稿など。

image(画像)
単独の画像。投稿本文内の最初の <img /> タグが画像と見なされる。もし投稿本文が URL のみの場合はそれが動画 URL となり、投稿タイトル (post_title) が画像の title 属性となる。

link(リンク)
 他サイトへのリンク。投稿本文内の一つ目の <a href=””> タグがその投稿の外部リンクと見なされる。もし投稿本文が URL のみの場合はその URL が外部リンクとなり、投稿タイトル (post_title) が名前となる。

quote(引用)
 引用文。引用文と引用元のテキストエリアを設けるのが望ましい。引用文は <blockquote>$quote_wrapped_with_paragraphs<p><cite>$citation</cite></p></blockquote> として post_content に保存すること。

status(ステータス)
通常140程度の短い近況アップデート。Twitter のツイートのようなもの。

video(動画)
 単独の動画。投稿本文内の最初の <video /> タグまたは object/embed が動画と見なされる。もし投稿本文が URL のみの場合は、それが動画 URL となる。

audio(音声)
 音声ファイル。ポッドキャストにも使える。

chat(チャット)
 チャット履歴。

[投稿フォーマット – WordPress Codex 日本語版 ]


これらの投稿フォーマットの、表示されているテキストを変更する方法です。

例えば、「リンク」となっているのを「PDF」のように変更するときは、次のようにfunctions.phpに記述します。

[functions.php]

add_action( 'admin_head', 'rename_post_formats' );

//投稿フォーマットの名前を変更
function rename_post_formats() {
global $current_screen;
if ( $current_screen->id == 'post' ) {
?>
<script type="text/javascript">
jQuery(function($){
    $("label.post-format-icon").each(function() {
        if ( $(this).text() == "リンク" ){
            $(this).text("PDF");
        }
    });
});
</script>
<?php }
}

 

これで次のように「リンク」が「PDF」に変わりました。

2015-03-27 17.06.49


やっていることは、jQueryで文字を操作しているだけです。以下のコードの部分ですね。

        if ( $(this).text() == "リンク" ){
            $(this).text("PDF");
        }

 

注意点としては、以下の箇所です。現在、表示しているページが「投稿の追加画面」かどうかを判定しています。これがないと、全てのページでjQueryのコードが吐き出されてしまいます。

if ( $current_screen->id == 'post' ) {

 

もし固定ページの場合は、ここが「page」になります。

if ( $current_screen->id == 'page' ) {

 

ついでに、投稿一覧画面なら「edit-post」です。

if ( $current_screen->id == 'edit-post' ) {

 

現在の$current_screenを知りたいときは、強引ですが以下のようにfunctions.phpに記述して調べることも可能です。管理画面がくずれてしまうので、一時的な調査用ですが。

add_action( 'admin_head', array( $this, 'display_current_screen' ) );

function display_current_screen(){
    global $current_screen;
    print_r($current_screen);
}

この記事を書いた人:

ナカシマ

北区赤羽在住のWEBデザイナー兼エンジニア。インターネット、WordPress、本・漫画、音楽が大好き。妻と猫と暮らすアップル信者。

BLOG: 着ぐるみ追い剥ぎペンギン