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

Añadir contenido a the_content

Estas en el tema de Añadir contenido a the_content en el foro de WordPress en Foros del Web. Buenas, Estoy tratando de crear un simple plugin que añada una lineas de contenido a the_content pero algo no me funciona. Las lineas la escribo ...
  #1 (permalink)  
Antiguo 26/03/2012, 19:55
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Añadir contenido a the_content

Buenas,

Estoy tratando de crear un simple plugin que añada una lineas de contenido a the_content pero algo no me funciona. Las lineas la escribo desde una caja en el Admin que he creado y estas deberían aparecer al final del contenido del post.

Código PHP:
<?php

Plugin Name
xxxx
Plugin URI
xxx
Description
xxx
Version
1.0
Author
xxx
Author URI
xxx
License
xxx

add_action
('admin_menu''campos_fuentes');  
     function 
campos_fuentes() {
        
add_meta_box('aniadirfuntes','Fuentes','func_camp_fuentes','post','normal','high');
}

global 
$wpdb$post;

function 
func_camp_fuentes() {
     
$value1  = (get_post_meta($post->IDaniadirfuntestrue)); 
       
     echo 
'<div class="caja_admin_fuentes">
                                                             
                   <input type="text" name="fuente[]" id="aniadirfuntes" value="'
.htmlspecialchars($value1).'" style="width: 200px;" />
                                                       
               </div>'
;
                          
}


function 
aniadirfuentes(){
    
   
$fuente=$_POST['fuente']; 
                         
    foreach(
$fuente as $url ) {
           
           
$salidaenlace=parse_Url($urlPHP_URL_HOST); 
           print 
'<a href='.$url .'>'.$salidaenlace.'</a>';
           echo 
", ";              
     }
           
                               
}

add_filter ('the_content''aniadirfuentes');   
                                                
?>
Un saludo.
  #2 (permalink)  
Antiguo 27/03/2012, 08:31
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años
Puntos: 656
Respuesta: Añadir contenido a the_content

Hola Naked!

Tenés algunos errores, y yo lo avancé un poco pero no está completo.

1- No muy importante, pero el encabezado del plugin necesita estar entre comments.

Código PHP:
Ver original
  1. /*
  2. Plugin Name: xxxx
  3. Plugin URI: xxx
  4. Description: xxx
  5. Version: 1.0
  6. Author: xxx
  7. Author URI: xxx
  8. License: xxx
  9. */

2- Tu metabox se genera bien, pero no guarda en ningún momento el contenido. Me di el lujo de reformularlo.

Código PHP:
Ver original
  1. add_action('admin_menu', 'campos_fuentes');  
  2.      function campos_fuentes() {
  3.         add_meta_box('fuente','Fuentes','func_camp_fuentes','post','normal','high');
  4. }
  5.  
  6. function func_camp_fuentes() {
  7.     global $wpdb, $post;
  8.     $custom = get_post_custom($post->ID);
  9.       $fuente = $custom["fuente"][0];
  10. ?>        
  11.         <div class="caja_admin_fuentes">
  12.                                                              
  13.             <input type="text" name="fuente" id="aniadirfuntes" value="<?php get_post_meta($post->ID, 'fuente', true); ?>" style="width: 200px;" />
  14.                                                        
  15.         </div>
  16. <?php                            
  17. }
  18.  
  19. add_action('save_post', 'save_details');
  20. add_action('publish_post', 'save_details');
  21.  
  22. function save_details() {
  23.     global $post;  
  24.     $custom_meta_fields = array(
  25.         'fuente'
  26.     );
  27.     foreach( $custom_meta_fields as $custom_meta_field ) {
  28.         if(isset($_POST[$custom_meta_field]) && !empty($_POST[$custom_meta_field])) {
  29.             update_post_meta($post->ID, $custom_meta_field, $_POST[$custom_meta_field]);
  30.         }
  31.     }    
  32. }

3- Ahora te queda a vos la tarea de imprimir el link resultante. Te paso un código que encontré en los foros de soporte de WordPress para añadir un hook a the_content, para que tengas una base de donde partir.

Código PHP:
Ver original
  1. function add_before_content($content) {
  2.  return 'Default Message'.$content;
  3. }
  4. add_filter('the_content', add_before_content);

Tenenos al tanto de como avanzás con este tema!
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #3 (permalink)  
Antiguo 27/03/2012, 11:37
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Añadir contenido a the_content

Hola Nekko,

Lo de la cabecera ha sido un error al escribirlo, gracias.

Acabo de probar tu código y rompe wp, estoy tratando de ver porqué?
A ver si conseguimos hacer funcionar este plugin .


El caso es que el metabox con mi código lo carga bien y si utilizo la función...

Código PHP:
<?

function aniadirfuentes($content) {
       
        
$fuente"Prueba";
               
        return 
$content;
}
add_filter ('the_content''aniadirfuentes');

?>
...imprime "Prueba" al final del contenido del post, no se.

Un saludo.
  #4 (permalink)  
Antiguo 27/03/2012, 13:18
 
Fecha de Ingreso: febrero-2012
Ubicación: México
Mensajes: 227
Antigüedad: 12 años, 2 meses
Puntos: 48
Respuesta: Añadir contenido a the_content

Cita:
Iniciado por naked Ver Mensaje
Hola Nekko,

Lo de la cabecera ha sido un error al escribirlo, gracias.

Acabo de probar tu código y rompe wp, estoy tratando de ver porqué?
A ver si conseguimos hacer funcionar este plugin .


El caso es que el metabox con mi código lo carga bien y si utilizo la función...

Código PHP:
<?

function aniadirfuentes($content) {
       
        
$fuente"Prueba";
               
        return 
$content;
}
add_filter ('the_content''aniadirfuentes');

?>
...imprime "Prueba" al final del contenido del post, no se.

Un saludo.
Pero ese código no usa la variable $fuente. En realidad no debería agregar "Prueba", porque nunca usas esa variable.

El filtro debe modificar a the_content. Si lo que deseas es agregar al final, algo como lo siguiente debería funcionar:
Código PHP:
$content $content $fuente;
return 
$content
  #5 (permalink)  
Antiguo 07/04/2012, 06:39
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Añadir contenido a the_content

Me refiero que si utilizo solo la función aniadirfuentes, añade el contenido que de esa variable a The_content, pero lo que no consigo que el contenido de los campos de texto del metabox sea el que se añade a cada post.
  #6 (permalink)  
Antiguo 07/04/2012, 08:15
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 14 años, 9 meses
Puntos: 429
Respuesta: Añadir contenido a the_content

Supongo que debes usar alguna query para llamar a los campos personalizados. Ya que suelen crearse para crear contenido separado de the_content y utilizable para otras tareas.

En este enlace tiene información sobre eso: http://codex.wordpress.org/Custom_Fields

Para añadir algo al final de un post, dentro de the_content, puedes añadir una función como esta en functions.php o usarla en forma de plugin:

Código:
function insertar_contenido($content) {
        if(!is_feed() && !is_home()) {
                $content.= "<div class=''>"; //aquí la clase que quieras si quieres en forma de div, de parrafo o de lo que quieras
                $content.= "<h4>Titulo para contenido añadido</h4>"; //si quieres que lleve título
                $content.= "<p>Aquí el contenido añadido con <a href='http://ruta-a-enlace'>enlace</a> o sin enlace.</p>";
                $content.= "</div>";
        }
        return $content;
}
add_filter ('the_content', 'insertar_contenido');
Espero que bien el enlace o la función te sirvan. ;)
__________________
Mi blog personal | Mi G+
  #7 (permalink)  
Antiguo 11/04/2012, 06:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Añadir contenido a the_content

El caso es que el contenido de los campos personalizados lo consigo llamar. Le he añadido un código para que lo imprima en un archivo nuevo en el ftp y con un add_acction lo imprime bien, pero en wordpress...

Código PHP:
$fuente[0
... se imprime como un "1"


Código PHP:
function addfuente($content){
            
 
$fuente$_POST['fuente']; 

 global 
$wpdb;

  
$rows $wpdb->get_results("SELECT ID, post_title, post_content FROM $wpdb->posts
    WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1"
);
    
    if(!
is_feed() && !is_home()) {
            
        foreach (
$rows as $row) {
          
              
$salidaxml.=$row->post_content."<br />";
              
$salidaxml.=$fuente[0];               
              
           }
                     
                
$content print_r($salidaxml);
                   
    }
     
     return 
$content;
                     
    
/* $ruta = "../pruebas/archivoprueba.php";
     $fp = fopen($ruta, "w+"); 
     fwrite($fp, $salidaxml.PHP_EOL); 
     flock($fp, 3);
         fclose($fp); */
                  
}
add_filter ('the_content''addfuente'); 
En el archivo nuevo que creo con fwrite lo consigo hacer funcionar, pero en el post de wordpress en el loop foreach, $fuente[0] se imprime como un "1".
Un saludo

Última edición por naked; 11/04/2012 a las 08:18

Etiquetas: plugin
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 08:09.