Alterar o título de uma Meta Box

Estou tentando criar uma function que me permita mudar o título de uma meta checkbox estabelecida (ou seja, alterar o título da Meta Box ‘Autores’ para ‘Equipe’, etc.)

Eu não queria usar o JS ou ter que desmarcar a checkbox meta original e voltar a adicioná-lo.

Comecei com o seguinte como por outro tópico que listou o código assim:

// hook to the 'add_meta_boxes' action add_action('add_meta_boxes', 'change_meta_box_titles'); function change_meta_box_titles($post_type, $post)) { global $wp_meta_boxes; // array of defined meta boxes // cycle through the array, change the titles you want } 

Estou preso na parte para “percorrer a matriz e alterar os títulos que deseja”.

Qual seria a melhor maneira de conseguir isso? Usando um foreach for loop? Ou um cenário Switch / Case? Eu sou bastante novo nisso, alguém poderia fornecer um exemplo de como realizar isso?

Atualização: o exemplo de Stephen Harris funciona para o Core Meta (obrigado!):

 add_action('add_meta_boxes', 'change_meta_box_titles'); function change_meta_box_titles() { global $wp_meta_boxes; // array of defined meta boxes // cycle through the array, change the titles you want $wp_meta_boxes['post']['normal']['core']['authordiv']['title']= 'Team Member'; } 

Atualização: corrigida para Meta personalizada

Para que isso funcione com a mudança de meta personalizada, altere o seu add_action da seguinte forma para que ele acione seu código de título de alteração após a checkbox de meta ter sido adicionada:

 add_action('add_meta_boxes', 'change_meta_box_titles', 999); 

Solutions Collecting From Web of "Alterar o título de uma Meta Box"

Resposta melhorada

Eu decidi revisar esta questão depois de perceber o quão incomumente hackear é.

A melhor solução é remover a metabox e depois voltar a adicioná-la, especificando um título alternativo. Aqui está um exemplo para o pós-tipo de publicação.

 add_action( 'add_meta_boxes_post', 'wpse39446_add_meta_boxes' ); function wpse39446_add_meta_boxes() { remove_meta_box( 'authordiv', 'post', 'core' ); add_meta_box( 'authordiv', __('Team Member','wpse39446_domain'), 'post_author_meta_box', 'post', 'core', 'high' ); } 

Nota: Se você estiver fazendo isso para uma metabox não-core, você precisará garantir que o callback seja chamado após a metabox ser adicionada especificando uma prioridade mais alta.


Então, $wp_meta_boxes tem muitos arrays nesteds

Para seus propósitos:

 $wp_meta_boxes['post_type']['normal']['core']['authordiv']['title']= 'teams'; 

(NB. Não tenho certeza se algum argumento é passado para essa ação …:

 add_action('add_meta_boxes', 'change_meta_box_titles'); function change_meta_box_titles() { global $wp_meta_boxes; // array of defined meta boxes // cycle through the array, change the titles you want } 

Na verdade, a estrutura da matriz é mais complicada. Eu atualizei meu código. Eu testei isso e funciona: D (Apenas certifique-se de alterar 'post_type' para o tipo de publicação, por exemplo, ‘post’).

Solamente a estrutura da matriz é pós-tipo> prioridade> núcleo> metabox ID.

Se você quiser ver a matriz para si mesmo, dentro de sua function use:

 echo '
'; print_r($wp_meta_boxes); echo '

'; wp_die('');

Eu sei que esta é uma pergunta antiga, mas há um filtro para isso. Você adicionaria às functions.php do seu post_type_labels_{$post_type} ou functions.php personalizada plugin uma function enganchada para post_type_labels_{$post_type}

Tomemos, por exemplo, que temos um tipo de publicação personalizado chamado band e queremos alterar os labels das imagens em destaque para “Band Photo”. A function seria algo assim:

 function wpse39446_modify_featured_image_labels( $labels ) { $labels->featured_image = __( 'Band Photo', 'textdomain' ); $labels->set_featured_image = __( 'Set Band Photo', 'textdomain' ); $labels->remove_featured_image = __( 'Remove Band Photo', 'textdomain' ); $labels->use_featured_image = __( 'Use as Band Photo', 'textdomain' ); return $labels; } add_filter( 'post_type_labels_band', 'wpse39446_modify_featured_image_labels', 10, 1 ); 

ref: https://developer.wordpress.org/reference/hooks/post_type_labels_post_type/

Afaik, sua melhor aposta seria ligar uma function ao gancho antes da criação da checkbox de meta:

 function alter_meta_box_titles( $post_type, $priority, $post ) { global $wp_meta_boxes; // Do check if you're on the right $post_type, $priority, etc. // Then alter the output foreach( $wp_meta_boxes as $index => $box ) $wp_meta_boxes[ $index]['title'] = 'CUSTOM TITLE'; return $wp_meta_boxes; } add_action( 'do_meta_boxes', 'alter_meta_box_titles', 0, 3); 

Ok … Este é um pequeno hacky, mas pensei que era inteligente. Basicamente, você apenas usa as funções de linguagem incorporadas para mudar o que você gosta. Enquanto você conhece a palavra ou as palavras originais que deseja mudar e elas foram devidamente chamadas no código com algo como __('text in here') , você pode alterá-las para o que quiser.

Uma vez usei-o para mudar a checkbox meta “Excertos” para um nome diferente (juntamente com a descrição no interior) porque o meu tema o usava para textos extremamente pequenos. Dar uma olhada:

 /** * Here are some customizations that change text output via the gettext filter. * This was intended for translating themes to other languages, but why not * use it for more customization? * * @link http://codex.wordpress.org/Plugin_API/Filter_Reference/gettext * */ add_filter( 'gettext', 'change_excerpt_name', 20, 3 ); function change_excerpt_name( $translated_text, $text, $domain ) { if( $_GET['post_type'] == 'events' ) { switch ( $translated_text ) { case 'Excerpt' : $translated_text = 'Quick Summary'; break; case 'Excerpts are optional hand-crafted summaries of your content that can be used in your theme. Learn more about manual excerpts.' : $translated_text = 'Use this field to REALLY condense the description of this event. Keep it around 12 words or less if possible. If you skip this field, the first few words in the area above will be used instead.'; break; } } return $translated_text; } 

Na verdade, não fui o único a pensar nisso. Surpresa. Aqui está um artigo que discute a mesma idéia , com um método diferente de usar o gettext.

Desde o WordPress 4.4, o arg de $ screen pode ser uma matriz que simplifica muito as adições de massa ou as alterações de meta checkboxs.

O seguinte código altera o título da checkbox de caracteres “Autor” para “Editor” em páginas, postagens, anexos e todos os tipos de postagem personalizados, independentemente de quantos são adicionados ou quando são adicionados ao seu site.

 add_action('do_meta_boxes', 'my_customize_meta_boxes'); //using do_meta_boxes also allows plugin metaboxes to be modified function my_customize_meta_boxes(){ $post_types = get_post_types(); remove_meta_box( 'authordiv', $post_types, 'normal' ); add_meta_box('authordiv', __('Editor'), 'post_author_meta_box', $post_types, 'side', 'default'); } 

Isso é um pouco hackeado, mas para quem precisa de uma solução CSS simples, use isso:

 .meta-box-sortables #your-metabox-id .ui-sortable-handle span { color: transparent; } .meta-box-sortables #your-metabox-id .ui-sortable-handle span:before { content: 'Your new title'; display: inline-block; color: #000; } 

Basta replace o seu-metabox-id pelo seu próprio. 🙂

(nota: normalmente adiciono um admin.css através de functions.php, é aí que eu controlo alguns estilos de administração do wp)