Comment renommer les messages de type posts par défaut

8

J'utilise le type de publication Posts pour afficher les éléments du portfolio et il semble étrange que le portfolio soit étiqueté comme posts. Existe-t-il un moyen de renommer les publications en portefeuille à la place pour mieux refléter son utilisation.

Evie Milo
la source
ce plugin change les types de messages: wordpress.org/extend/plugins/post-type-switcher je pense que celui-ci fonctionne plus en masse wordpress.org/extend/plugins/convert-post-types
helgatheviking

Réponses:

9

Si vous souhaitez simplement renommer l'apparence des publications, plutôt que de créer un type de publication personnalisé, ajoutez ce code à votre fichier themes 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;
}

Dans un souci de transparence, j'ai obtenu ce code de cet article , même si j'ai utilisé des astuces similaires dans le passé.

supajb
la source
2
Bien que cela soit bien comme affichage d'un concept technique, le remplacement d'un mot dans tout le texte localisé est trop large.
Rarst
Comment cela affectera-t-il les performances? Les filtres ci-dessus sont-ils uniquement utilisés dans le backend?
mikkelbreum
Je pense que ce n'est pas une bonne solution à ce cas particulier. $ Translated peut contenir une chaîne comme 'click on the post man' ou 'se om du har fået post' (danois), auquel cas vous ne voudriez PAS remplacer 'post' par 'news'
mikkelbreum
9

J'ai utilisé le script suivant pour renommer le type de message par défaut:

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' );
elbatron
la source
7

Vous devez créer un type de publication personnalisé, "Portfolio".

Les messages sont des messages. Pourquoi essayer de les utiliser comme quelque chose qu'ils ne sont pas, puis essayer de changer leur nomenclature, au lieu d'écrire une ou deux fonctions simples functions.php, ce qui aura pour résultat à la fois la fonctionnalité exacte et la nomenclature exacte que vous voulez?

Chip Bennett
la source
Parce que je n'ai pas utilisé de types de publication personnalisés jusqu'à aujourd'hui et que le site Web que j'ai créé utilise la fonctionnalité de blog pour exécuter un portfolio car le client ne veut pas de blog - alors j'ai pensé pourquoi ne pas utiliser le blog configuré pour exécuter un portfolio à la place - sauf réinventer la roue pour ainsi dire. Il semble beaucoup plus facile de changer les noms de manu que de refaire tout le site car tout le contenu a été ajouté.
Evie Milo
Il suffirait d'une requête SQL pour changer le post_type pour tous les messages concernés, une fois que vous avez créé votre type de message personnalisé ...
Chip Bennett
1
Chip est définitivement correct ici. C'est ce que je ferais et ce qui devrait être fait dans un cas comme celui-là à mon humble avis.
mfields
2
Le sql dont vous avez besoin ressemble un peu à ceci. UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';Vous devrez probablement modifier le préfixe de la table (wp_) pour refléter ce paramètre dans votre installation actuelle.
mfields
2
Je vous prie de différer de l'honorable Chip Bennett ... Les messages sont là pour organiser les éléments de manière chronologique. Pourquoi enregistrer un autre post_type, changer les requêtes, si tout ce dont vous avez besoin est déjà là? Dans mes sites Web non anglais, je change régulièrement les fichiers de langue de WordPress pour qu'ils correspondent à la fonctionnalité Posts et je la renomme en News, Articles ou Portfolio.
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;
}

J'ai reçu cette astuce du magazine fracassant et l'ai testée et cela fonctionne très bien

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

J'ai trouvé ce fil lorsque je cherchais une solution pour changer le type de message d'un nom à un autre.

Au lieu de faire une requête personnalisée comme suggéré par quelqu'un ici, j'ai simplement fait ceci:

$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

Les cpt doivent être ofc déjà créés et formatés.

super-héros
la source
1

Renommer des publications en portfolio

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
la source
En quoi est-ce différent de l'autre réponse de @elbatron?
kaiser
@kaiser - Cette réponse est correcte, celle qui est marquée comme la réponse par l'OP est incorrecte (regardez les actions - 'admin_menu' et 'init' sont dans le mauvais sens. Aussi, cela répond aux utilisateurs de la __()fonction.
David Gard
Pourquoi echo '';?
Bill
0

Si vous souhaitez simplement modifier le libellé du menu d'administration de Post -> Portfolio, regardez cette question:

Modification des étiquettes du menu Admin

[Mise à jour]

Ce plugin Admin Menu Editor semble vous permettre de changer plus facilement les étiquettes de menu - je ne l'ai pas testé cependant.

anu
la source
merci, je vais voir si je peux comprendre quelque chose à partir de cela, même si cela semble un peu compliqué pour moi.
Evie Milo
1
J'ai ajouté un lien vers un plugin qui devrait vous aider
anu
merci pour le lien, mais je veux en savoir plus sur le fichier functions.php et éviter d'utiliser trop de plugins. J'ai suivi votre premier lien et il m'a finalement conduit ici: new2wp.com/snippet/change-wordpress-posts-post-type-news et cela m'a aidé à le trier très rapidement - merci pour votre aide!
Evie Milo
@Evie Milo - vous devez marquer la réponse comme acceptée.
kaiser
0

Vous aurez juste besoin de créer un autre article personnalisé avec les mêmes capacités qu'un article ordinaire. Vous pouvez ensuite désactiver le menu Messages avec ceci:

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');
Pomme reinette
la source
emprunter cette voie créerait trop de travail supplémentaire à ce stade avancé du projet - pas quelque chose que le budget permettrait - tout le contenu a maintenant été ajouté et je voulais juste voir s'il y avait un moyen de renommer les messages en portefeuille afin qu'il était moins déroutant pour le client.
Evie Milo
0

L'objet get_post_type_object fera le travail.

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';
}
Nuno Sarmento
la source