Início » Desenvolvimento WordPress » Register_meta: novidades da função no WordPress 4.6
Desenvolvimento WordPress

Register_meta: novidades da função no WordPress 4.6

O WP tem filtros para sanitizar e definir permissões para seus post metas customizados desde a versão 3.3. Isso pode ser através da função register_meta.
agosto de 2016 /4 min de leitura
Conteúdo escrito por humano
register_meta

O WordPress possui filtros que possibilitam sanitizar e definir permissões para seus post metas customizados desde a versão 3.3. Isso pode ser através da função register_meta.

Register_meta antes da versão 4.6

Até então utilizávamos essa função da seguinte maneira:

<?php

add_action( 'init', 'register_example' );

function register_example() {
   register_meta(
     'post', 
     'example_meta_key',
     'sanitize_example', 
     'auth_example'
   );
}

function sanitize_example( $meta_value, $meta_key, $meta_type ) {
    return absint( $meta_value );
}

function auth_example( $allowed, $meta_key, $post_ID ) {
    if ( ! current_user_can( 'edit_others_posts' ) ) {
       $allowed = false;
    }

    return $allowed;
}

?>

4.6

Antes de mais nada, vale ressaltar que o código acima continuará funcionando na versão 4.6, embora não será considerado integralmente registrado. Os callbacks serão registrados, entretanto as meta_keys não serão adicionadas ao registro global. Um objeto WP_Error será devolvido com esta explicação. Logo abaixo vamos entender isso.

Mas o que mudou na prática?

A partir de agora existe uma global com todas as meta_keys registradas, seu nome é $wp_meta_keys. Registrando as meta_keys da maneira que fizemos no exemplo acima elas não serão adicionadas dentro dessa global.

A assinatura da função de register_meta() mudou para suportar 3 argumentos, sendo o último um array que aceita os seguintes parâmetros:

  • sanitize_callback, um método de callback para sanitizar o valor. Esta é a nova versão do terceiro parâmetro na atual versão da register_meta().
  • auth_callback, um método de callback para definir a autorização. Esta é a nova versão do quarto parâmetro da register_meta().
  • object_subtype, uma string contendo o subtipo do objeto. Se não houver o subtipo do objeto, o meta não será registrado e um WP_Error será retornado.
  • type,  uma string indicando qual o tipo de dado do valor a ser salvo. (e.g. boolean, integer)
  • description, uma string contendo uma breve descrição do valor a ser salvo.
  • single, define se o código para recuperar essa meta_key deve esperar um valor único e vários resultados quando usar, por exemplo, a função get_post_meta().
  • show_in_rest, define se deve ser exibido nos endpoints da WordPress REST API. Note que isto deve ser tratado como experimental até que a WordPress REST API forneça suporte para metadados.
<?php
$args = array(
    'object_subtype'    => 'post',
    'sanitize_callback' => 'sanitize_my_meta_key',
    'auth_callback'     => 'authorize_my_meta_key',
    'type'              => 'string',
    'description'       => 'My registered meta key',
    'single'            => true,
    'show_in_rest'      => true,
);
register_meta( 'post', 'my_meta_key', $args );
?>

Você precisa saber…

Por padrão, apenas os tipos principais de objeto WordPress (post, user, term, comment) podem ser registrados. Para adicionar suporte para tipos de objetos personalizados, use o filtro wp_object_types.

Object Subtypes (subtipos de objeto) fornecem um registro específico meta_keys a um tipo de dados.

  • Um post padrão tem um tipo de objeto “post” e um subtipo de objeto  “post”.
  • Um tipo de post personalizado registrado com slug  “my_cpt” tem um tipo de objeto “post” e um subtipo de objeto “my_cpt”.
  • Um usuário tem um tipo de objeto  “user” e um subtipo de objeto  “user”.
  • Um comentário padrão tem um tipo de objeto “comment” e um subtipo de objeto “comment”.
  • Um termo de categoria padrão tem um tipo de objeto “term” e um subtipo de objeto “category”.
  • A taxonomia personalizada registrada com slug “my_tax” tem um tipo de objeto “term” e um subtipo de objeto “my_tax”.

As meta_keys devem ser explicitamente registradas para cada tipo de objeto e combinação de subtipo.

Manipulando meta_keys registradas

Para auxiliar a tarefa de consultar/manipular as meta_keys registradas na global $wp_meta_keys foram adicionadas novas funções:

  • get_registered_metadata()
  • get_registered_meta_keys()
  • unregister_meta()
  • registered_meta_key_exists()

As modificações na função register_meta provê aos desenvolvedores de temas e plugins um leque muito grande de possibilidades a serem exploradas.

Pronto para desfrutar de todos os recursos que o WordPress 4.6 tem a oferecer?

Qual nota você da para este artigo?
Ruim

O que você achou disso?

Clique nas estrelas

Média da classificação 0 / 5. Número de votos: 0

Nenhum voto até agora! Seja o primeiro a avaliar este post.

Excelente
Artigos Relacionados

Como Posicionar Seu Blog Entre os Primeiros no Google de Forma Eficaz

Ferramentas Gratuitas de Segurança para Blogs Úteis

Construa seu site WordPress sob medida com os maiores especialistas em WordPress da America Latina
Conheça a Apiki

Faça um comentário
Cadastre-se rápido

Fazer Login