Skip to content

Instantly share code, notes, and snippets.

@tacensi
Created June 18, 2019 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tacensi/2332d4af7817a8c5cbb233bede22a456 to your computer and use it in GitHub Desktop.
Save tacensi/2332d4af7817a8c5cbb233bede22a456 to your computer and use it in GitHub Desktop.
Create Meta Field
<?php
/**
* Plugin Name: Movie Review - Atores
* Plugin URI: https://example.com/plugins/the-basics/
* Description: Acrescenta uma metabox para preenchimento dos atores para um blog de review de cinema
* Version: 20190625
* Author: WP&etc
* Author URI: https://wp.etc.br/
* License: GPL2
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: movie-review-domain
* Domain Path: /languages
*/
add_action( 'load-post.php', 'setup_movie_review_actors' );
add_action( 'load-post-new.php', 'setup_movie_review_actors' );
function setup_movie_review_actors() {
add_action( 'add_meta_boxes', function() {
add_meta_box(
'movie-review', // ID da sua meta box
esc_html__( 'Atores', 'movie-review-domain' ), // Título, preparado para internacionalização
'movie_review_add_meta_box', // função de callback
'post', // Tipo de post onde aparecerá sua metabox
'side', // Contexto ou localização na página, no caso na barra lateral
'default' // Prioridade
);
});
/* Salvando os dados da metabox */
add_action( 'save_post', 'movie_review_save_meta_box', 10, 2 );
}
/**
* Mostra a meta box
* @return null imprime o formulário da metabox na tela
*/
function movie_review_add_meta_box() {
// mostra um nonce para validação do formulário
wp_nonce_field( basename( __FILE__ ), 'moview_review_nonce' );
// Campos do formulário da metabox ?>
<p>
<label for="movie-review-atores">
<?php _e( "Principais atores do filme.", 'movie-review-domain' ); ?>
</label>
<br />
<input class="widefat" type="text" name="movie-review-atores" id="movie-review-atores" value="<?php echo esc_attr( get_post_meta( $post->ID, 'movie_review_atores', true ) ); ?>" size="30" />
</p>
<?php
}
/* Salvando os metadados da metabox */
function movie_review_save_meta_box( $post_id, $post ) {
/* Primeiro verificamos se é uma requisição válida checando o nonce. */
if ( ! isset( $_POST['moview_review_nonce'] ) || ! wp_verify_nonce( $_POST['moview_review_nonce'], basename( __FILE__ ) ) )
return;
// Vamos checar o tipo de post:
$post_type = get_post_type_object( $post->post_type );
// E se o usuário pode editá-lo
if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
return;
// Vamos pegar o valor que o usuário envior e dar uma limpeza.
$novo_valor = ( isset( $_POST['movie-review-atores'] ) ? sanitize_html_class( $_POST['movie-review-atores'] ) : '' );
// A chave do campo customizado, onde iremos guardar o metadado
$chave = 'movie-review-atores';
// Pegamos o valor antigo para comparação.
$valor_antigo = get_post_meta( $post_id, $chave, true );
// Aqui fazemos a mágica. Se for igual, deixa quieto, se for
// diferente, atualizamos, acrescentamos ou apagamos, dependendo
// do caso.
// novo preenchido e antigo vazio: adicionamos
if ( ! is_empty( $novo_valor ) && is_empty( $valor_antigo ) ) {
add_post_meta( $post_id, $chave, $novo_valor, true );
}
// valores existentes e diferentes: editamos
if ( ! is_empty( $novo_valor ) && $novo_valor != $valor_antigo ) {
update_post_meta( $post_id, $chave, $novo_valor );
}
// Valor novo vazio e antigo preenchido: deletamos.
if ( is_empty ($novo_valor ) && ! is_empty( $valor_antigo ) ) {
delete_post_meta( $post_id, $chave, $valor_antigo );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment