Created
June 18, 2019 22:47
-
-
Save tacensi/2332d4af7817a8c5cbb233bede22a456 to your computer and use it in GitHub Desktop.
Create Meta Field
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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