デフォルトの投稿タイプの投稿の名前を変更する方法


8

投稿タイプの投稿を使用してポートフォリオアイテムを表示していますが、ポートフォリオに投稿のラベルを付けるのは奇妙に見えます。Postsの名前をPortfolioに変更する方法はありますか?


このプラグインは投稿タイプを変更します:wordpress.org/extend/plugins/post-type-switcherこれは一括でより効果的に機能すると思いますwordpress.org/extend/plugins/convert-post-types
helgatheviking

回答:


9

カスタム投稿タイプを作成するのではなく、投稿の外観の名前を変更するだけの場合は、このコードをテーマのfunctions.phpファイルに追加します。

// hook the translation filters
add_filter(  'gettext',  'change_post_to_portfolio'  );
add_filter(  'ngettext',  'change_post_to_portfolio'  );

function change_post_to_portfolio( $translated ) {
  $translated = str_ireplace(  'Post',  'Portfolio',  $translated );  // ireplace is PHP5 only
  return $translated;
}

透明性のために、この記事からこのコードを入手しましたが、以前にも同様のトリックを使用しました。


2
これは技術的な概念の表示としては問題ありませんがローカライズされたすべてのテキストの一部の単語を置き換えるのは広すぎます。
Rarst

これはパフォーマンスにどのように影響しますか?上記のフィルターはバックエンドでのみ使用されますか?
mikkelbreum 2014年

これはこの特定のケースに対する良い解決策ではないと思います。$ translatedには、 'post on the post man'や 'se om du harfåetpost'(デンマーク語)などの文字列が含まれる場合があります。その場合、 'post'を 'news'に置き換えたくないでしょう
mikkelbreum

9

次のスクリプトを使用して、デフォルトの投稿タイプの名前を変更しました。

function change_post_menu_label() {
    global $menu, $submenu;

    $menu[5][0] = 'Portfolio';
    $submenu['edit.php'][5][0] = 'Portfolio';
    $submenu['edit.php'][10][0] = 'New Portfolio';
    $submenu['edit.php'][16][0] = 'Portfolio Tags';
    echo '';
}
add_action( 'admin_menu', 'change_post_menu_label' );

function change_post_object_label() {
    global $wp_post_types;

    $labels = &$wp_post_types['post']->labels;
    $labels->name = 'Portfolio';
    $labels->singular_name = 'Portfolio';
    $labels->add_new = 'New Portfolio';
    $labels->add_new_item = 'New Portfolio';
    $labels->edit_item = 'Edit Portfolio';
    $labels->new_item = 'New Portfolio';
    $labels->view_item = 'View Portfolio';
    $labels->search_items = 'Search Portfolio';
    $labels->not_found = 'Not found';
    $labels->not_found_in_trash = 'Not found in trash';
}
add_action( 'init', 'change_post_object_label' );

7

カスタム投稿タイプ「ポートフォリオ」を作成する必要があります。

投稿は投稿です。何もないものとしてそれらを使用することを試み、次に、1つまたは2つの単純な関数をで作成する代わりに、それらの命名法を変更しようとするfunctions.phpと、正確な機能と正確な命名法の両方が得られますか?


今日までカスタム投稿タイプを使用していなかったため、クライアントがブログを望んでいないため、設定したWebサイトがブログ機能を使用してポートフォリオを実行しているため、代わりにブログ設定を使用してポートフォリオを実行しないようにした-いわば、ホイールの再発明を省いてください。すべてのコンテンツが追加されているため、サイト全体をやり直すよりもマニュアの名前を変更する方がはるかに簡単です。
Evie Milo

あなたのカスタムポストタイプ...作成したらそれだけで、影響を受けるすべての投稿のためpost_typeを変更するには、SQLクエリを取るだろう
チップベネット

1
チップは間違いなくここで正しいです。これは私が何をすべきかであり、この私見のような場合に何をすべきかです。
mfields

2
必要なsqlは次のようにUPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';なります。現在のインストールでの設定を反映するには、テーブルのプレフィックス(wp_)を変更する必要があります。
mfields

2
名誉あるチップベネットとは異なる点をお願いします...投稿は、時系列で要素を整理するためにあります。必要なものがすべてすでにあるのに、なぜ別のpost_typeを登録し、クエリを変更するのですか?英語以外のWebサイトでは、投稿機能に合わせてWordPress言語ファイルを定期的に変更し、名前をNews、Articles、またはPortfolioに変更します。
ブラソフィロ

2
// hook the translation filters
add_filter(  'gettext',  'change_post_to_article'  );
add_filter(  'ngettext',  'change_post_to_article'  );

function change_post_to_article( $translated ) {
     $translated = str_ireplace(  'Post',  'Article',  $translated );  // ireplace is PHP5 only
     return $translated;
}

私はスマッシング雑誌からこのヒントを得てそれをテストしました、そしてそれは素晴らしい働きをします

http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/

1

このスレッドは、投稿タイプをある名前から別の名前に変更するための解決策を探していたときに見つかりました。

ここで誰かが提案したカスタムクエリを実行する代わりに、私は単にこれを行いました:

$post = get_post( $id );      // The current post id
$post->post_type = 'receipt'; // The new post type name
wp_update_post( $post );      // Updating the new information

cptはすでに作成され、フォーマットされています。


1

ポートフォリオの名前を変更する

function litho_posts_portfolio() {
    global $menu;
    global $submenu;
    $menu[5][0] = __("Portfolio", 'litho');
    $submenu['edit.php'][5][0] = __("Portfolio", 'litho');
    $submenu['edit.php'][10][0] = __("New Item", 'litho');
    echo '';
}
function litho_posts_portfolio_label() {
    global $wp_post_types;
    $labels = &$wp_post_types['post']->labels;
    $labels->name = __("Portfolio", 'litho');
    $labels->singular_name = __("Item", 'litho');
    $labels->add_new = __("New Item", 'litho');
    $labels->add_new_item = __("New Item", 'litho');
    $labels->edit_item = __("Edit Item", 'litho');
    $labels->new_item = __("Item", 'litho');
    $labels->view_item = __("View Item", 'litho');
    $labels->search_items = __("Search Portfolio", 'litho');
    $labels->not_found = __("No Item Found", 'litho');
    $labels->not_found_in_trash = __("No Item found in Trash", 'litho');
}
add_action( 'init', 'litho_posts_portfolio_label' );
add_action( 'admin_menu', 'litho_posts_portfolio' );

@elbatronによる他の回答とどう違うのですか?
カイザー2014年

@kaiser -この答えは行動を見て(OPによって答えとしてマークされている1が間違っている、正しいです- 「admin_menu」と「initは」周りの間違った方法です。また、この答えのユーザー。__()機能。
デビッド・ガール

なぜecho '';
Bill

0

管理メニューのラベルを投稿->ポートフォリオから変更したいだけの場合は、次の質問を見てください。

管理メニューラベルの変更

[更新]

このプラグインの管理メニューエディターは、メニューラベルをより簡単に変更できるように見えますが、まだテストしていません。


ちょっと複雑に見えますが、これから何かを理解できるかどうかを確認します。
Evie Milo

1
私はあなたに役立つはずのプラグインへのリンクを追加しました
anu

リンクに感謝しますが、functions.phpファイルをより深く理解し、あまりにも多くのプラグインを使用しないようにします。私はあなたの最初のリンクをたどり、最終的にここに私を導きました:new2wp.com/snippet/change-wordpress-posts-post-type-newsそしてそれは私がそれを本当に素早く整理するのを助けました-あなたの助けに感謝!
Evie Milo、

@Evie Milo-回答を承認済みとしてマークする必要があります。
カイザー

0

通常の投稿と同じ機能を持つ別のカスタム投稿を作成する必要があります。次に、これを使用して[投稿]メニューを無効にできます。

function remove_menus()
{
    global $menu;
    $restricted = array( __('Posts'));
    end ($menu);

    while (prev($menu))
    {
        $value = explode(' ',$menu[key($menu)][0]);

        if(in_array($value[0] != NULL?$value[0]:"" , $restricted))
        {
            unset($menu[key($menu)]);
        }
    }
}
add_action('admin_menu', 'remove_menus');

このルートを下ると、プロジェクトのこの後期段階で追加の作業が多すぎます-予算が許す範囲ではありません-すべてのコンテンツが追加されました。クライアントの混乱が少なかった。
Evie Milo、

0

get_post_type_objectは、作業を行います。

add_action( 'init', 'ns_change_post_object' );
// Change dashboard Posts to News
function ns_change_post_object() {
   $get_post_type = get_post_type_object('post');
    $labels = $get_post_type->labels;
    $labels->name = 'News';
    $labels->singular_name = 'News';
    $labels->add_new = 'Add News';
    $labels->add_new_item = 'Add News';
    $labels->edit_item = 'Edit News';
    $labels->new_item = 'News';
    $labels->view_item = 'View News';
    $labels->search_items = 'Search News';
    $labels->not_found = 'No News found';
    $labels->not_found_in_trash = 'No News found in Trash';
    $labels->all_items = 'All News';
    $labels->menu_name = 'News';
    $labels->name_admin_bar = 'News';
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.