Metabox no WordPress
-
Olá Pessoal, estou precisando da ajuda de vocês.
Adicionei um novo metabox ao functions.php do meu tema com o seguinte codigo:<?php add_action( 'admin_init', 'add_creditosbox' ); function add_creditosbox() { add_meta_box( 'creditosbox', 'Créditos do Filme', 'add_content_creditosbox', 'filme' ); } function add_content_creditosbox() { global $post; $value = get_post_meta( $post->ID, 'creditos', true ); if ( !$value ) { $value = ''; add_post_meta( $post->ID, 'creditos', $value, true ); } ?> <table class="custom-post-box"> <tr> <td><textarea name="creditos" cols="174" rows="10"><?php echo $value ?></textarea></td> </tr> </table> <?php } add_action( 'save_post', 'save_creditosbox' ); function save_creditosbox( $post_id ) { if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id; if ( get_post_type( $post_id ) == 'filme' ) { $value_old = get_post_meta( $post_id, 'creditos', true ); $value_new = esc_attr( $_POST[ 'creditos' ] ); if ( !$value_new ) { if ( $value_old ) delete_post_meta( $post_id, 'creditos', $value_old ); } else { update_post_meta( $post_id, 'creditos', $value_new ); } } return $post_id; } ?>
Utilizo o codigo
<?php echo get_post_meta($post->ID, 'creditos', true) ?>
para lê-lo na pagina single.phpEle está funcionando corretamente, desde que não seja utilizado codigos html, ou seja se eu digitar
<br />
, por exemplo, ná pagina isso aparece exatamente dessa forma, acessei o banco de dados e vi que o mesmo está escrevendo da seguinte forma: & lt;br /& gt;Logo isso me faz imagninar que isso seja algum problema relacionado a charset ou algo do tipo, espero que alguem possa me ajudar…
Desde já, Obrigado!
-
Use esc_html ao inves de esc_attr:
$value_new = esc_html( $_POST[ 'creditos' ] );
Ricardo meu amigo, obrigado pela tentativa de ajuda, mas a mesma não funcionou, o codigo html continua sendo lido como texto…
Ainda preciso da ajuda de vocês…
outro dia tive um pepino com isso.
Resolveu usando esc_html para salvar e html_entity_decode($html) na exibição. Aí rolou legal.
Desculpe minha ignorancia, mas onde devo colocar esse html_entity_decode($html)? não achei nada semelhante em lugar algum…
Desde já, Obrigado!
Essa parte vai no seu template mesmo, não no backend.
Algo tipo:
$value = get_post_meta( $post->ID, 'creditos', true ); echo '<div id="creditos">'; echo html_entity_decode($value); echo '</div>';
Parabéns meu velho, agora sim consegui fazer funcionar! muito Obrigado!
- O tópico ‘Metabox no WordPress’ está fechado para novas respostas.