So benennen Sie Standardposts vom Typ Posts um

8

Ich verwende Posts vom Typ Posts, um Portfolioelemente anzuzeigen, und es sieht seltsam aus, wenn das Portfolio als Posts gekennzeichnet ist. Gibt es eine Möglichkeit, Posts in Portfolio umzubenennen, um deren Verwendung besser widerzuspiegeln?

Evie Milo
quelle
Dieses Plugin ändert die Post-Typen: wordpress.org/extend/plugins/post-type-switcher Ich denke, dieses Plugin funktioniert mehr in Massen. wordpress.org/extend/plugins/convert-post-types
helgatheviking

Antworten:

9

Wenn Sie das Erscheinungsbild von Posts einfach umbenennen möchten, anstatt einen benutzerdefinierten Post-Typ zu erstellen, fügen Sie diesen Code zu Ihrer Datei functions.php hinzu.

// 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;
}

Im Interesse der Transparenz habe ich diesen Code aus diesem Artikel erhalten , obwohl ich in der Vergangenheit ähnliche Tricks angewendet habe.

supajb
quelle
2
Während dies als Darstellung des technischen Konzepts in Ordnung ist, ist das Ersetzen eines Wortes in allen lokalisierten Texten zu weit gefasst.
Rarst
Wie wirkt sich dies auf die Leistung aus? Werden die oben genannten Filter nur im Backend verwendet?
Mikkelbreum
Ich denke, dies ist keine gute Lösung für diesen speziellen Fall. $ translated könnte eine Zeichenfolge wie 'click on the post man' oder 'se om du har fået post' (dänisch) enthalten. In diesem Fall möchten Sie 'post' NICHT durch 'news' ersetzen
mikkelbreum
9

Ich habe das folgende Skript verwendet, um den Standardposttyp umzubenennen:

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' );
Ellbatron
quelle
7

Sie müssen einen benutzerdefinierten Beitragstyp "Portfolio" erstellen.

Beiträge sind Beiträge. Warum sollten Sie versuchen, sie als etwas zu verwenden, das sie nicht sind, und dann versuchen, ihre Nomenklatur zu ändern, anstatt ein oder zwei einfache Funktionen einzuschreiben functions.php, die dazu führen, dass Sie sowohl die genaue Funktionalität als auch die genaue Nomenklatur haben, die Sie möchten?

Chip Bennett
quelle
Da ich bis heute keine benutzerdefinierten Beitragstypen verwendet habe und die von mir eingerichtete Website die Blog-Funktion zum Ausführen eines Portfolios verwendet, da der Client kein Blog möchte, habe ich mir überlegt, warum ich das eingerichtete Blog nicht zum Ausführen eines Portfolios verwenden sollte - sparen Sie es, das Rad sozusagen neu zu erfinden. Es scheint viel einfacher zu sein, die Manuskriptnamen zu ändern, als die gesamte Site erneut zu erstellen, da der gesamte Inhalt hinzugefügt wurde.
Evie Milo
Es würde nur eine SQL-Abfrage erfordern, um den post_type für alle betroffenen Posts zu ändern, sobald Sie Ihren benutzerdefinierten Post-Typ erstellt haben ...
Chip Bennett
1
Chip ist hier definitiv richtig. Dies ist, was ich tun würde und was in einem Fall wie diesem meiner Meinung nach getan werden sollte.
Mfields
2
Die benötigte SQL sieht ungefähr so ​​aus. Sie müssen UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';höchstwahrscheinlich das Tabellenpräfix (wp_) ändern, um diese Einstellung in Ihrer aktuellen Installation widerzuspiegeln.
Mfields
2
Ich möchte mich von dem ehrenwerten Chip Bennett unterscheiden ... Beiträge dienen dazu, Elemente chronologisch zu organisieren. Warum einen anderen post_type registrieren, die Abfragen ändern, wenn alles, was Sie brauchen, bereits vorhanden ist? Auf meinen nicht englischen Websites ändere ich regelmäßig WordPress-Sprachdateien, um sie an die Posts-Funktionalität anzupassen, und benenne sie in News, Artikel oder Portfolio um.
brasofilo
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;
}

Ich habe diesen Tipp vom Smashing Magazine erhalten und getestet und er funktioniert hervorragend

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

Ich habe diesen Thread gefunden, als ich nach einer Lösung gesucht habe, um den Beitragstyp von einem Namen in einen anderen zu ändern.

Anstatt eine benutzerdefinierte Abfrage durchzuführen, wie von jemandem hier vorgeschlagen, habe ich einfach Folgendes getan:

$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

Die cpt müssen ofc bereits erstellt und formatiert worden sein ..

Superheld
quelle
1

Benennen Sie Beiträge in Portfolio um

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' );
Davidcondrey
quelle
Wie unterscheidet sich das von der anderen Antwort von @elbatron?
Kaiser
@kaiser - Diese Antwort ist richtig, die vom OP als Antwort gekennzeichnete ist falsch (siehe die Aktionen - 'admin_menu' und 'init' sind falsch herum. Auch diese Antwort verwendet die __()Funktion.
David Gard
Warum das echo '';?
Bill
0

Wenn Sie nur die Bezeichnung des Admin-Menüs unter Post -> Portfolio ändern möchten, sehen Sie sich diese Frage an:

Ändern der Admin-Menübezeichnungen

[Aktualisieren]

Mit diesem Plugin- Admin-Menü-Editor können Sie die Menübezeichnungen einfacher ändern - ich habe es jedoch noch nicht getestet.

anu
quelle
Danke, ich werde sehen, ob ich etwas daraus herausfinden kann, obwohl es für mich etwas kompliziert aussieht.
Evie Milo
1
Ich habe einen Link zu einem Plugin hinzugefügt, das Ihnen helfen soll
anu
Vielen Dank für den Link, aber ich möchte mehr in die Datei functions.php aufnehmen und vermeiden, zu viele Plugins zu verwenden. Ich bin Ihrem ersten Link gefolgt und er hat mich schließlich hierher geführt: new2wp.com/snippet/change-wordpress-posts-post-type-news und das hat mir geholfen, es sehr schnell zu klären - danke für Ihre Hilfe!
Evie Milo
@ Evie Milo - Sie sollten die Antwort als akzeptiert markieren.
Kaiser
0

Sie müssen lediglich einen weiteren benutzerdefinierten Beitrag mit den gleichen Funktionen wie ein normaler Beitrag erstellen. Sie können dann das Menü Beiträge folgendermaßen deaktivieren:

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');
Pippin
quelle
Wenn Sie diesen Weg beschreiten, würde dies zu einem späten Zeitpunkt des Projekts zu viel zusätzliche Arbeit bedeuten - was das Budget nicht zulässt -. Alle Inhalte wurden jetzt hinzugefügt, und ich wollte nur sehen, ob es eine Möglichkeit gibt, die Beiträge in Portfolio umzubenennen war für den Kunden weniger verwirrend.
Evie Milo