Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

[SOLUCIONADO] salto de linea al procesar un get_post_meta

Estas en el tema de salto de linea al procesar un get_post_meta en el foro de WordPress en Foros del Web. Hola amigos les comento que cree un campo personalizado para insertar enlaces de descargas en el, que es el siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver ...
  #1 (permalink)  
Antiguo 10/11/2013, 06:32
 
Fecha de Ingreso: junio-2010
Mensajes: 14
Antigüedad: 14 años, 5 meses
Puntos: 0
salto de linea al procesar un get_post_meta

Hola amigos les comento que cree un campo personalizado para insertar enlaces de descargas en el, que es el siguiente:

Código PHP:
Ver original
  1. add_action('admin_init', 'mega_add_custom_box', 1);
  2. function mega_add_custom_box() {
  3.     add_meta_box(
  4.         'id_mega',
  5.         'URL MEGA',
  6.         'wp_box_mega',
  7.         'post'
  8.     );
  9. }
  10.  
  11. function wp_box_mega($post) {
  12. wp_nonce_field(plugin_basename(__FILE__), 'mega_noncename');
  13. if($_GET['action']=='edit'){
  14. $mega=get_post_meta($post->ID,'mega',true);
  15. echo'<textarea name="mega" style="width:100%"/>'.$mega.'</textarea>';
  16. }else{
  17. echo'<textarea name="mega" style="width:100%"/></textarea>';   
  18. }
  19. }
  20.  
  21. add_action('save_post', 'guardar_mega');
  22.  
  23. function guardar_mega($post_id){
  24.   if ( !wp_verify_nonce( $_POST['mega_noncename'], plugin_basename(__FILE__) ) )
  25.       return $post_id;
  26.  
  27.   if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
  28.       return $post_id;
  29.  
  30.    
  31.   if ( !current_user_can( 'edit_post', $post_id ) )
  32.         return $post_id;
  33.  
  34. delete_post_meta($post_id, 'mega');
  35. if(!empty($_POST['mega'])){
  36.   add_post_meta($post_id, 'mega', esc_attr($_POST['mega']));
  37. }
  38.  
  39. }

y para recuperar lo que ingreso en ese textarea en mi single.php utilizo:

Código PHP:
Ver original
  1. <?php echo get_post_meta(get_the_ID(), 'mega', true); ?>

el problema esta en que aunque yo ingrese los enlaces uno debajo de el otro en el textarea, en el post se ven todos en la misma linea, unas imágenes para que vean:




hay alguna forma de hacer que el texto salga un enlace debajo del otro como lo ingreso en el textarea?
  #2 (permalink)  
Antiguo 10/11/2013, 10:45
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: salto de linea al procesar un get_post_meta

Hola bpsysoficial, se nota que has hecho tu esfuerzo y además has planteado tu duda de forma entendible (ojalá todos fueran así).

Cuando ingresas datos a través de un campo de formulario, debes tener en cuenta que la base de datos te lo devolverá como una sola línea. Si quieres mostrarlo en líneas separadas, es preciso que lo conviertas en array con un explode, basándote en el salto de línea generado en el campo de texto:

Código PHP:
Ver original
  1. $mega_campos = get_post_meta($post->ID , 'mega' , true); // Consultando los datos
  2.  
  3. $mega_links = explode("\n" , $mega_campos); // Convirtiendo en array

Desde luego, un array debe ser procesado con un bucle que ejecute una iteración (o vuelta) por cada elemento:

Código PHP:
Ver original
  1. foreach($mega_links as $m)
  2.     $mega_lista .= '
  3.     <li>'. make_clickable($m) .'</li>'; // make_clickable() te convierte el texto automáticamente en enlace

Listo. Sólo falta meterlo en una pequeña función para que sea más manipulable. Copia/pega lo siguiente en tu archivo functions.php:

Código PHP:
Ver original
  1. function mega_lista() {
  2.     global $post;
  3.  
  4.     $mega_campos = get_post_meta($post->ID , 'mega' , true);
  5.     $mega_lista = null;
  6.  
  7.     if( !empty($mega_campos) ) {
  8.         $mega_lista .= '
  9.         <ul>';
  10.         $mega_links = explode("\n" , $mega_campos);
  11.  
  12.         foreach($mega_links as $m)
  13.             $mega_lista .= '
  14.             <li>'. make_clickable($m) .'</li>';
  15.  
  16.         $mega_lista .= '
  17.         </ul>';
  18.  
  19.         echo $mega_lista;
  20.     }
  21.  
  22.     return false;
  23. }

En tu single.php sólo coloca (dentro del loop por supuesto):

Código PHP:
Ver original
  1. <?php mega_lista() ?>
  #3 (permalink)  
Antiguo 10/11/2013, 10:55
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: salto de linea al procesar un get_post_meta

O si solo quieres ponerle un salto de linea usa nl2br

Código PHP:
Ver original
  1. echo nl2br(get_post_meta(get_the_ID(), 'mega', true));
__________________
Drupal Argentina
  #4 (permalink)  
Antiguo 10/11/2013, 15:27
 
Fecha de Ingreso: junio-2010
Mensajes: 14
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: salto de linea al procesar un get_post_meta

muchísimas gracias a los dos :) soy un poco novato en esto, y esto se me complico bastante, por suerte hay comunidades como estas que ofrecen ayuda y usuarios como ustedes que están dispuestos a ayudar ;)

Etiquetas: php, plugin, post, procesar, salto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:25.