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

Ejecutar un código PHP cada vez que publico un post

Estas en el tema de Ejecutar un código PHP cada vez que publico un post en el foro de WordPress en Foros del Web. ¡Hola a todos! Ya no sé ni si me recordáis, hace mucho que no me paseo por el foro, pero estoy trabajando en mi web ...
  #1 (permalink)  
Antiguo 23/08/2009, 16:00
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Ejecutar un código PHP cada vez que publico un post

¡Hola a todos! Ya no sé ni si me recordáis, hace mucho que no me paseo por el foro, pero estoy trabajando en mi web Por tí mismo.

Lo que ocurre es que estoy haciendo un sistema de mininoticias (si entráis a la web lo veréis, es una línea arriba que pone: "Noticias | En el foro de Sugerencias alainleitza ha publicado un mensaje en el tema Publicar aquí los errores o sugerencias del foro". Y quiero que al publicar un post en el blog, se me ejecute una función que tengo para añadir una noticia:
Código PHP:
//por poner un ejemplo
agregarnoticia('he pubicado una entrada llamada "Foros del web"'); 
¿Cómo podría hacer para que, cuando publique un post, se me ejecute esa función? También me gustaría conocer el título y el link hacia el post que acabo de insertar.
  #2 (permalink)  
Antiguo 26/08/2009, 12:58
Avatar de splashman  
Fecha de Ingreso: julio-2002
Ubicación: Super lejos
Mensajes: 364
Antigüedad: 21 años, 9 meses
Puntos: 1
Respuesta: Ejecutar un código PHP cada vez que publico un post

Pero basicamente que deseas hacer, porque tal vez si das mas detalle de lo que quieres puede que te ayudemos. Tal vez haya un plugin para eso.
__________________
Cada dia se aprende algo nuevo
  #3 (permalink)  
Antiguo 27/08/2009, 14:14
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Ejecutar un código PHP cada vez que publico un post

Lo puedes hacer creando un plugin para wordpress (busca en google son muy sencillos es un simple archivo php que debes crear)..

En el creas la funcion que quieras (ej: 'my_funcion') y la asignas a una action de Wordpress..
Es decir le dices a wordpress que cuando pase determinado evento ejecute tu codigo:

Esto se hace llamando en el codigo de tu plugin add_action('action_name','my_funcion')....

Donde 'action_name' es una Action disponible de Wordpress (HAY UN MILLON ...buscalas en google por Wordpress Action Reference)...

Y donde 'my_funcion' es el nombre de tu funcion...

Un ejemplo:

(Que utilizo para cuando alguien hace
un comment da algun post le envia un mensaje al correo del usuario que publico dicho post avisando que han comentado un post suyo):


function avisoNuevoComentario($comment_id){
$comment = get_comment($comment_id);
$post = get_post($comment->comment_post_ID);
$user = get_userdata( $post->post_author );

$notify_message = '';
$notify_message .= 'Nuevo comentario en tu post:' . $post->post_title . "\r\n";
$notify_message .= 'Autor : ' . $comment->comment_author . ' IP:' . $comment->comment_author_IP . ' Dominio:' . $comment_author_domain . "\r\n";
$notify_message .= 'E-mail : ' . $comment->comment_author_email . "\r\n";
$notify_message .= 'URL : ' . $comment->comment_author_url . "\r\n";
$notify_message .= __('Comentario: ') . "\r\n\t" . $comment->comment_content . "\r\n\r\n";
$notify_message .= __('Puedes ver todos los comentarios de este post aqui.: ') . "\r\n";

$subject = 'Nuevo Comentario en BlogSeciu para un POST tuyo!!! TITULO DEL POST:' . $post->post_title;


$notify_message .= get_permalink($comment->comment_post_ID) . "#comments\r\n\r\n";
$notify_message .= sprintf( __('Borralo: %s'), admin_url("comment.php?action=cdc&c=$comment_id") ) . "\r\n";
$notify_message .= sprintf( __('Marcalo como spam: %s'), admin_url("comment.php?action=cdc&dt=spam&c=$comme nt_id") ) . "\r\n";

$to = $user->user_email;

mail($to, $subject, $notify_message);

}

Y la llamada al add_action asi:

add_action('comment_post','avisoNuevoComentario');

Aqui el action es comment_post...que se ejecuta cuando alguien comenta un post..

Espero no haberte mareado...pero como ves se puede hacer con un unico archivo....Salu2
  #4 (permalink)  
Antiguo 28/08/2009, 04:22
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Respuesta: Ejecutar un código PHP cada vez que publico un post

Gracias splashman por interesarte, pero creo que ya detallé bastante el primer mensaje y no se me ocurría nada más que agregar.

sandinosaso, ¿entonces tengo que crear un plugin?. Muchas gracias, buscaré en Google .

PD: Por lo que veo, la action_name que necesito debe ser publish_post. Seguiré buscando para intentar hacer el plugin.

PD2: Ya creo que lo tengo, es algo así, ¿no?:
Código PHP:
<?php
/*
Plugin Name: Noticias
Plugin URI: http://portimismo.site90.com
Description: Noticias para Por ti mismo
Author: Raulmmmm
Version: 0.5
Author URI: http://raulmmmm.netii.net
*/
function ponernoticia($post_id){
$noticia 'he publicado una nueva entrada: <a href="http://portimismo.site90.com/blog/?p='.$post_id.'">'.$post_title.'</a>';
$seccion 'blog';
mysql_query("INSERT INTO noticias (noticia, seccion) VALUES ('$noticia', '$seccion')");
}
add_action('publish_post''ponernoticia');
?>
Lo único que me falta saber son las variables del id y del título de la entrada que se acaba de publicar. ¿Me podrías ayudar? Es la primera vez que hago un plugin y estoy un poco perdido .

Última edición por Raulmmmm; 28/08/2009 a las 04:31
  #5 (permalink)  
Antiguo 01/09/2009, 11:24
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Ejecutar un código PHP cada vez que publico un post

Raulmmmmmm tienes casi completo el codigo:
Aqui esta completo:

<?php
/*
Plugin Name: Noticias
Plugin URI: http://portimismo.site90.com
Description: Noticias para Por ti mismo
Author: Raulmmmm
Version: 0.5
Author URI: http://raulmmmm.netii.net
*/
function ponernoticia2($post_id){
$post = get_post($post_id); // Un Objecto post con muchos campos como autor, titulo, hora, etc
$user = get_userdata( $post->post_author ); // Nombre del usuario que publico el post
$post_title = $post->post_title; // El titulo del post

$noticia = 'he publicado una nueva entrada: <a href="http://portimismo.site90.com/blog/?p='.$post_id.'">'.$post_title.'</a>';
$seccion = 'blog';
mysql_query("INSERT INTO noticias (noticia, seccion) VALUES ('$noticia', '$seccion')");

}
add_action('publish_post', 'ponernoticia');
?>

Ahora solo ve a la carpeta donde tienes instalado wordpress ve a wp-content luego a la carpeta plugins ahi crea una carpeta para tu plugin (Digamos "Noticias_Plugin") guarda el codigo que te escribi arriba como "Noticias_Plugin.php" dentro de la carpeta) y LISTO!!!


Ve a la parte de administracion de Wordpress y activa tu plugin...y listo..cada vez que crees un post se ejecutara tu codigo...ten cuidado que lo mismo sucedera cuando se edite algun post...

Salu2
  #6 (permalink)  
Antiguo 03/09/2009, 01:16
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Respuesta: Ejecutar un código PHP cada vez que publico un post

¡Muchísimas gracias! Se te coló un pequeño error: pusiste al principio "ponernoticia2" y abajo "ponernoticia" y cuando copié y pegué no funcionaba, y estaba :. Pero esta mañana, con la mente despejada, me he puesto a revisarlo y ahí estaba el error! Ahora ya funciona perfectamente, y el código ha quedado así:
Código PHP:
<?php
/*
Plugin Name: Noticias
Plugin URI: http://portimismo.site90.com
Description: Noticias para Por ti mismo
Author: Raulmmmm
Version: 0.61
Author URI: http://raulmmmm.netii.net
*/
function ponernoticia($post_id){
$post get_post($post_id); // Un Objecto post con muchos campos como autor, titulo, hora, etc
$user get_userdata$post->post_author ); // Nombre del usuario que publico el post
$post_title $post->post_title// El titulo del post

$noticia 'he publicado una nueva entrada: <a href="http://portimismo.site90.com/blog/?p='.$post_id.'">'.$post_title.'</a>';
$seccion 'blog';
$enlace 'http://portimismo.site90.com/blog/?p='.$post_id;
mysql_query("INSERT INTO noticias (noticia, seccion, enlace, nombre) VALUES ('$noticia', '$seccion', '$enlace', '$post_title')");

}
add_action('publish_post''ponernoticia');
?>
De nuevo, muchas gracias por tu ayuda .

PD: Como curiosidad, es mi mensaje 1.492, el año en que Colón descubrió América, y este ha sido el post en el que yo he descubierto cómo hacer plugins de WordPress .
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 02:09.