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

Uso los comentarios de facebook en mi wordpress, como se que alguien ha comentado?

Estas en el tema de Uso los comentarios de facebook en mi wordpress, como se que alguien ha comentado? en el foro de WordPress en Foros del Web. Hola, uso Facebook comments, lei la documentacion de facebook para saber cuando alguien ha comentado y no entendi nada. Alguien sabe que hay que hacer?....

  #1 (permalink)  
Antiguo 18/02/2012, 10:48
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Uso los comentarios de facebook en mi wordpress, como se que alguien ha comentado?

Hola, uso Facebook comments, lei la documentacion de facebook para saber cuando alguien ha comentado y no entendi nada.

Alguien sabe que hay que hacer?.
  #2 (permalink)  
Antiguo 18/02/2012, 15:40
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Uf, yo estuve en esas. Te explico lo que yo hice. Lo hice hace un tiempo luego de frustrarme buscando alguna solución más eficaz y sencilla.

Nota: Para hacer esto necesitás acceso al servidor por FTP y modificar archivos del theme.

Creá un archivo javascript con este contenido. Llamalo como quieras. notificacionesFacebook.js por ejemplo.

Código Javascript:
Ver original
  1. /*
  2.     Notificaciones de email para comentarios de facebook.
  3.     Nahuel Jose
  4.     http://www.nahueljose.com.ar
  5.  */
  6.  
  7. function fbCommNotificar(sendPath) {
  8.     FB.Event.subscribe('comment.create', function(response) {
  9.  
  10.         // Nombre de la pagina
  11.         var siteName =  $('title').html();
  12.        
  13.         // Titulo de la pagina
  14.         var pageTitle =  $('title').html();
  15.  
  16.         // Url de la pagina
  17.         var pageURL =  document.location.href;
  18.  
  19.         // obtener los ultimos comentarios de la pagina
  20.         $.ajax({
  21.             url:'https://graph.facebook.com/comments/?ids=' + pageURL + '&' + Math.floor(Math.random()*101),
  22.             dataType: 'json',
  23.             success: function(results){
  24.                 allResults = results[pageURL].data;
  25.                 lastResult = allResults[allResults.length-1];
  26.                
  27.                 // enviar el email
  28.                 $.post(sendPath,{ name: lastResult.from.name, message : lastResult.message, page_url : pageURL, page_title : pageTitle});
  29.             }
  30.         });
  31.     });
  32. }

Ahora en header.php, incluye jQuery (si es que no está ya) y ese script.
Luego ubicá esta línea (la tenés que haber incluido a la hora de insertar el plugin de facebook comments:
Código Javascript:
Ver original
  1. FB.init({appId: 'ID-DE-TU-APP', status: true, cookie: true, xfbml: true});
Y debajo colocá:
Código Javascript:
Ver original
  1. fbCommNotificar('<?php bloginfo('template_directory') ?>/comentarios.php');};

Ambas líneas deberían estar dentro de una función algo así:

Código Javascript:
Ver original
  1. window.fbAsyncInit = function() {
  2.     FB.init({appId: 'ID-DE-TU-APP', status: true, cookie: true, xfbml: true});
  3.     fbCommNotificar('<?php bloginfo('template_directory') ?>/comentarios.php');
  4. };

fbCommNotificar() es una función en javascript que recibe como parámetro un archivo php (en mi caso comentarios.php) que obtiene los datos que se le está pasando y los manda por mail.

Cuando se crea un comentario, la api de facebook dispara un evento (comment.create). Lo que hacemos es suscribirnos a ese evento y cuando se dispara, enviar un email.

Ojo!: Para obtener el último comentario uso $.ajax() para leer un objeto json. Si alguien responde a un comentario, vas a recibir notificación del comentario padre (otra vez). O sea, te llega un mail, pero el comentario que figura es al que se ha respondido, no la respuesta. Esto es porque no me tomé el trabajo de analizar esos casos.

Ejemplo de archivo PHP para enviar comentarios:

Código PHP:
Ver original
  1. <?php
  2.     $recipient  = "[email protected]";
  3.     $from       = "Quien Manda <[email protected]>";
  4.    
  5.     $name       = urldecode($_REQUEST['name']);
  6.     $message    = urldecode($_REQUEST['message']);
  7.     $page_url   = urldecode($_REQUEST['page_url']);
  8.     $page_title = urldecode($_REQUEST['page_title']);
  9.    
  10.    
  11.     $subject    = $name . " hizo un comentario en Tu Sitio";
  12.    
  13.     if($name=='' || $message == ''){
  14.         die('<h1>Forbidden</h1>');
  15.     }
  16.    
  17.     $HTML = '<html><body style="text-align:center; padding:20px;">';
  18.     $HTML.= '<h1>' . $subject . '</h1>';
  19.     $HTML.= '<table align="center" width="500" style="text-align:left; vertical-align:top;">';
  20.     $HTML.= "<tr><td style='vertical-align:top; color:#000; width:20%;'><strong>Nombre</strong></td><td>$name</td></tr>";
  21.     $HTML.= "<tr><td style='vertical-align:top; color:#000; width:20%;'><strong>Mensaje</strong></td><td>$message</td></tr>";
  22.     $HTML.= "<tr><td style='vertical-align:top; color:#000; width:20%;'><strong>P&aacute;gina</strong></td><td>$page_url</td></tr>";
  23.     $HTML.= "<tr><td style='vertical-align:top; color:#000; width:20%;'><strong>T&iacute;tulo</strong></td><td>$page_title</td></tr>";
  24.     $HTML.= "</table>";
  25.     $HTML.= "<hr />";
  26.     $HTML.= "<p><a href='$page_url'#encargar>Revis&aacute; siempre que recibas este mail que no halla m&aacute;s comentarios! Click ac&aacute;.</a></p>";
  27.     $HTML.= "</body></html>";
  28.    
  29.     if(sendHTMLemail($HTML,$from, "$name <$email>", $recipient, $subject)){
  30.         echo 'Exito';
  31.     }
  32.     die;
  33.    
  34.     function sendHTMLemail($HTML,$from,$reply_to,$to,$subject)
  35.     {
  36.         $headers = "From: $from\r\n";
  37.         $headers .= "Reply-To:$reply_to\r\n";
  38.         $headers .= "Return-Path:$reply_to\r\n";
  39.         $headers .= "MIME-Version: 1.0\r\n";
  40.         $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
  41.        return mail($to,$subject,$HTML,$headers);
  42.     }
  43. ?>
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 18/02/2012, 15:54
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Respuesta 2 :P

En la práctica, me di cuenta que no todas las notificaciones llegaban. Yo se lo atribuí a el hecho de usar un servidor gratuito y lento, pero tal vez haya errores de otro tipo.

Lo que hice entonces fue lo siguiente:

El archivo comentarios.php (el que manda el email) lo modifiqué de esta forma:

Código PHP:
Ver original
  1. <?php
  2. // Incluir WordPress
  3. define('WP_USE_THEMES', false);
  4. require('/home/public_html/wordpress/wp-load.php');// Incluir wp-load.php
  5. ?>
  6.  
  7. <?php
  8.     $recipient  = "[email protected]";
  9.     $from       = "Quien Manda <[email protected]>";
  10.    
  11.     $name       = urldecode($_REQUEST['name']);
  12.     $message    = urldecode($_REQUEST['message']);
  13.     $page_url   = urldecode($_REQUEST['page_url']);
  14.     $page_title = urldecode($_REQUEST['page_title']);
  15.    
  16.    
  17.     $subject    = $name . " hizo un comentario en Tu Sitio";
  18.    
  19.     if($name=='' || $message == ''){
  20.         die('<h1>Forbidden</h1>');
  21.     }
  22.    
  23.     // si llegamos hasta aca, puede ser un comentario genuino. Entonces agregamos el meta key al post para marcar que tiene un comentario.
  24.     $slug_to_get = getLastPathSegment($page_url);
  25.     $args=array(
  26.       'name' => $slug_to_get,
  27.       'post_type' => 'post',
  28.       'post_status' => 'publish'
  29.     );
  30.     $my_posts = get_posts($args);
  31.     if( $my_posts && $slug_to_get!='') {
  32.          update_post_meta($my_posts[0]->ID, 'comentarios_nuevos','true');
  33.     }
  34.    
  35.     $HTML = '<html><body style="text-align:center; padding:20px;">';
  36.     $HTML.= '<h1>' . $subject . '</h1>';
  37.     $HTML.= '<table align="center" width="500" style="text-align:left; vertical-align:top;">';
  38.     $HTML.= "<tr><td style='vertical-align:top; color:#000; width:20%;'><strong>Nombre</strong></td><td>$name</td></tr>";
  39.     $HTML.= "<tr><td style='vertical-align:top; color:#000; width:20%;'><strong>Mensaje</strong></td><td>$message</td></tr>";
  40.     $HTML.= "<tr><td style='vertical-align:top; color:#000; width:20%;'><strong>P&aacute;gina</strong></td><td>$page_url</td></tr>";
  41.     $HTML.= "<tr><td style='vertical-align:top; color:#000; width:20%;'><strong>T&iacute;tulo</strong></td><td>$page_title</td></tr>";
  42.     $HTML.= "</table>";
  43.     $HTML.= "<hr />";
  44.     $HTML.= "<p><a href='$page_url'#encargar>Revis&aacute; siempre que recibas este mail que no halla m&aacute;s comentarios! Click ac&aacute;.</a></p>";
  45.     $HTML.= "</body></html>";
  46.    
  47.     if(sendHTMLemail($HTML,$from, "$name <$email>", $recipient, $subject)){
  48.         echo 'Exito';
  49.     }
  50.     die;
  51.    
  52.     function sendHTMLemail($HTML,$from,$reply_to,$to,$subject)
  53.     {
  54.         $headers = "From: $from\r\n";
  55.         $headers .= "Reply-To:$reply_to\r\n";
  56.         $headers .= "Return-Path:$reply_to\r\n";
  57.         $headers .= "MIME-Version: 1.0\r\n";
  58.         $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
  59.        return mail($to,$subject,$HTML,$headers);
  60.     }
  61.    
  62.     function getLastPathSegment($url) {
  63.         $path = parse_url($url, PHP_URL_PATH); // to get the path from a whole URL
  64.         $pathTrimmed = trim($path, '/'); // normalise with no leading or trailing slash
  65.         $pathTokens = explode('/', $pathTrimmed); // get segments delimited by a slash
  66.  
  67.         if (substr($path, -1) !== '/') {
  68.             array_pop($pathTokens);
  69.         }
  70.         return end($pathTokens); // get the last segment
  71.     }
  72. ?>

Lo que hice fue incluir Wordpress arriba. Luego, antes de enviar el email, lo que hago es agregar un meta key al post que recibió el comentario. De esta forma, puedo después obtener todos los posts que tienen comentarios.

Lo que hice fue incluir esto en functions.php

Código PHP:
Ver original
  1. // *********************************************
  2. // Agregar la pagina de comentarios en el panel
  3. // *********************************************
  4. add_action('admin_menu', 'comentarios_op');
  5.  
  6. function comentarios_op() {
  7.     add_menu_page( 'Comentarios', 'Commentarios', 'read', 'comentarios', 'comentarios_handler',get_bloginfo('template_directory') . '/images/facebook-icon.png');
  8. }
  9.  
  10.  
  11. function comentarios_handler() { ?>
  12.     <div id="fb-root"></div>
  13.     <script>window.fbAsyncInit = function() {
  14.         FB.init({appId: 'TU-AP-ID', status: true, cookie: true, xfbml: true});
  15.     };
  16.     (function(d, s, id) {
  17.       var js, fjs = d.getElementsByTagName(s)[0];
  18.       if (d.getElementById(id)) return;
  19.       js = d.createElement(s); js.id = id;
  20.       js.src = "//connect.facebook.net/es_ES/all.js#xfbml=1&appId=TU-AP-ID";
  21.       fjs.parentNode.insertBefore(js, fjs);  
  22.     }(document, 'script', 'facebook-jssdk'));</script>
  23.     <script>
  24.     jQuery(function(){
  25.         jQuery('a.mark_as_read').click(function(e){
  26.             var anchor = jQuery(this);
  27.             e.preventDefault();
  28.             var page_url = jQuery(this).attr('data-posturl');
  29.             jQuery.post("<?php bloginfo('template_directory'); ?>/comentario-leido.php", { page_url: page_url } , function(data){
  30.                 if(data=='exito'){
  31.                     anchor.parent().parent().fadeOut('fast',function(){
  32.                         jQuery(this).remove();
  33.                         if(!jQuery('').length){
  34.                             jQuery('#wpbody-content').append('<h2>No hay comentarios nuevos.</h2>');
  35.                         }
  36.                     });
  37.                 }else{
  38.                     alert('Hubo un error marcando los comentarios :( Intenta de nuevo re-cargando la pagina');
  39.                 }
  40.             });
  41.            
  42.         });
  43.     });
  44.     </script>
  45.    
  46.     <?php
  47.     global $post;
  48.     $tmp_post = $post;
  49.     $args = array( 'numberposts' => -1 , 'meta_key' => 'comentarios_nuevos', 'meta_value' => 'true');
  50.     $myposts = get_posts( $args );
  51.     $hay_comentarios = false;
  52.     foreach( $myposts as $post ) : setup_postdata($post); $hay_comentarios=true; ?>
  53.     <div style="padding:20px 0; border-bottom:2px dashed #CCC;">
  54.         <h2><a href="<? the_permalink(); ?>"><?php the_title(); ?></a> <iframe src="http://www.facebook.com/plugins/comments.php?href=<?php the_permalink(); ?>&amp;permalink=1" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:130px; height:16px;" allowTransparency="true"></iframe> <a class="mark_as_read" style="font-size:12px; text-decoration:underline; color:red;" data-posturl='<?php the_permalink();?>' href="#">Marcar como leidos</a></h2>
  55.         <p><a href="<? the_permalink(); ?>"><?php echo get_the_post_thumbnail($post->ID, 'thumbnail',array('title'=>get_the_title())); ?></a></p>
  56.         <div class="fb-comments" data-href="<? the_permalink(); ?>" data-num-posts="5" data-width="600"></div>
  57.     </div>
  58.     <?php endforeach; ?>
  59.     <?php if(!$hay_comentarios){ ?>
  60.         <h2>No hay comentarios nuevos.</h2>
  61.     <?php } ?>
  62.     <?php $post = $tmp_post; ?>
  63.    
  64.    
  65. <?php }

Y ahora necesitás incluir también otro archivo php para marcar los comentarios leídos: comentario-leido.php

Código PHP:
Ver original
  1. <?php
  2. // Incluir WordPress
  3. define('WP_USE_THEMES', false);
  4. require('/home/public_html/wordpress/wp-load.php');
  5. ?>
  6. <?php
  7.  
  8.     $page_url   = urldecode($_REQUEST['page_url']);
  9. // si llegamos hasta aca, puede ser un comentario genuino. Entonces agregamos el meta key al post para marcar que tiene un comentario.
  10.     $slug_to_get = getLastPathSegment($page_url);
  11.     $args=array(
  12.       'name' => $slug_to_get,
  13.       'post_type' => 'post',
  14.       'post_status' => 'publish'
  15.     );
  16.     $my_posts = get_posts($args);
  17.     if( $my_posts && $slug_to_get!='') {
  18.         delete_post_meta($my_posts[0]->ID, 'comentarios_nuevos');
  19.         echo 'exito';
  20.         die;
  21.     }
  22.    
  23. function getLastPathSegment($url) {
  24.     $path = parse_url($url, PHP_URL_PATH); // to get the path from a whole URL
  25.     $pathTrimmed = trim($path, '/'); // normalise with no leading or trailing slash
  26.     $pathTokens = explode('/', $pathTrimmed); // get segments delimited by a slash
  27.  
  28.     if (substr($path, -1) !== '/') {
  29.         array_pop($pathTokens);
  30.     }
  31.     return end($pathTokens); // get the last segment
  32. }
  33. ?>

Lo que todo esto hace es incluir una página en el panel de Wordpress que te muestra las entradas con comentarios nuevos y te da la posibilidad de marcarlos como leídos.

  • En esta y en la anterior solucion, tenés que cambiar el ID de tu app donde veas ID-DE-TU-APP
  • Es MUY MUY seguro que tengas que modificar parte de estos códigos para adaptarlos a tus necesidades.
  • Cuando incluyas wordpress en los archivos PHP, asegurate de cambiar la ruta de wp-load.php por la tuya
  • En el archivo comentarios.php, cambia bien las direcciones de email.
__________________
nahueljose.com.ar
  #4 (permalink)  
Antiguo 19/02/2012, 09:14
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Hola, wow gracias por tu explicacion hermano, excelente, ahora mismo lo pongo en practica.

una cosa, yo no instale plugin para los comentarios con fb, fue manualmente y no veo la linea que dices, tengo esto:

<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/es_LA/all.js#xfbml=1&appId=134309309932399";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
  #5 (permalink)  
Antiguo 19/02/2012, 10:41
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Mmm bueno, vas a tener que hacer algo de prueba y error. Intentá poner esto después de eso que me mostraste (antes de cerrar </script>. Si eso se inserta dinámicamente por un plugin, encerrá el código que te paso en <script></script> después de wp_head(); en header.php):

Código Javascript:
Ver original
  1. window.fbAsyncInit = function() {
  2.    FB.init({appId: 'ID-DE-TU-APP', status: true, cookie: true, xfbml: true});
  3.    fbCommNotificar('<?php bloginfo('template_directory') ?>/comentarios.php');
  4. };

El id de tu app parece ser 134309309932399, acordate de reemplazarlo.
__________________
nahueljose.com.ar
  #6 (permalink)  
Antiguo 19/02/2012, 13:49
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Una preg amigo, para guardar todos los like de los post y los twitts en la base de datos, es otra cosa aparte verdad?

Porque si mueves tu blog a otro dominio todos los likes se borran.
  #7 (permalink)  
Antiguo 19/02/2012, 14:27
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Claro, esas cosas se almacenan en los servidores de Facebook. Tenés que estudiar la API, porque si hay un evento para cuando se crea un comentario, seguramente hay otros para cuando alguien le da al me gusta. También depende de cómo uses el url. Por ejemplo, no es lo mismo:

https://graph.facebook.com/comments/...uvia-de-gotas/

que sin el www

https://graph.facebook.com/comments/...uvia-de-gotas/

Con esas URLs podés obtener los comentarios de una página cualquiera. Para obtener el número de likes y shares, por ejemplo:

https://api.facebook.com/method/fql....9;&format=json

también para cualquier URL.

De todas formas, dudo que sirva de algo almacenar eso en una base de datos... ¿qué vas a hacer después con eso? No podés restaurarlos o moverlos a tu nuevo dominio...
__________________
nahueljose.com.ar
  #8 (permalink)  
Antiguo 19/02/2012, 16:28
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Cierto, bueno dejame concentrarme en esto de comentarios, tengo un lio aqui, pruebo y todo y te aviso sin tengo problemas, gracias amigo!.
  #9 (permalink)  
Antiguo 20/02/2012, 14:15
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

No logro hacerlo, no hay una forma mas sencilla de saber que disco tiene nuevos comentarios?
  #10 (permalink)  
Antiguo 20/02/2012, 15:02
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Pues si, tal vez te compliqué la vida. Perdón.

La idea básica y general, es usar el evento que se dispara al hacer un comentario con javascript. Cuando ese evento ocurre, hacemos algo. Podemos usar ajax de forma de guardar en la base de datos o enviar un email. Es lo que yo hice, básicamente.

Mirá este ejemplo simplificado. Estudialo y decime si te resulta más entendible:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. </head>
  3.   <!-- Facebook comment, tal y cual lo usas vos -->
  4.   <div id="fb-root"></div>
  5. <script>(function(d, s, id) {
  6. var js, fjs = d.getElementsByTagName(s)[0];
  7. if (d.getElementById(id)) {return;}
  8. js = d.createElement(s); js.id = id;
  9. js.src = "//connect.facebook.net/es_LA/all.js#xfbml=1&appId=134309309932399";
  10. fjs.parentNode.insertBefore(js, fjs);
  11. }(document, 'script', 'facebook-jssdk'));</script>
  12.  
  13.   //aca creamos un script que se suscribe al evento comment.create
  14.   window.fbAsyncInit = function() {
  15.     FB.Event.subscribe('comment.create', function() { //suscribimos
  16.        //lo que yo ponga aca se ejecutará al hacerse un comentario
  17.        alert('Se hizo un comentario!');
  18.     });  
  19.   }
  20.  
  21.   <!-- aca el cosito para comentar -->
  22.   <div class="fb-comments" data-href="http://jsbin.com" data-num-posts="10" data-width="600"></div>
  23.  
  24.   </body>
  25. </html>

acá está en funcionamiento: http://jsbin.com/evumoj
__________________
nahueljose.com.ar
  #11 (permalink)  
Antiguo 20/02/2012, 19:44
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Si, entiendo ese mas facil,
solo me gustaria saber donde comentaron ya sea en wp admin o no, para yo poder responder, no tiene que ser muy complejo.
  #12 (permalink)  
Antiguo 20/02/2012, 20:29
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Bueno es mi 2da respuesta. Analizala bien y si tenés dudas concretas, preguntá.
__________________
nahueljose.com.ar
  #13 (permalink)  
Antiguo 20/02/2012, 20:43
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

A ver si entendi:

tengo esto en footer.php
Código:
  <div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/es_LA/all.js#xfbml=1&appId=134309309932399";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
esto lo pongo en dentro de head?
Código:
<script>
  //aca creamos un script que se suscribe al evento comment.create
  window.fbAsyncInit = function() {
    FB.Event.subscribe('comment.create', function() { //suscribimos
       //lo que yo ponga aca se ejecutará al hacerse un comentario
       alert('Se hizo un comentario!');
    });  
  }
</script>
esto lo tengo en single.php
Código:
<div class="fb-comments" data-href="URL DEL POST" data-num-posts="10" data-width="600"></div>
?
  #14 (permalink)  
Antiguo 20/02/2012, 20:46
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Cita:
Iniciado por RGT Ver Mensaje
esto lo pongo en dentro de head?
Código:
<script>
  //aca creamos un script que se suscribe al evento comment.create
  window.fbAsyncInit = function() {
    FB.Event.subscribe('comment.create', function() { //suscribimos
       //lo que yo ponga aca se ejecutará al hacerse un comentario
       alert('Se hizo un comentario!');
    });  
  }
</script>
?
Si has puesto el resto de los scripts en footer.php, a eso ponelo a continuación.
__________________
nahueljose.com.ar
  #15 (permalink)  
Antiguo 20/02/2012, 20:50
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Ok una ultima pregunta, todo todo en footer

y esto
<div class="fb-comments" data-href="URL DEL POST" data-num-posts="10" data-width="600"></div>
en single por supuesto.

donde vere los comentarios nuevos, en facebook?
  #16 (permalink)  
Antiguo 20/02/2012, 20:53
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

...?

No entiendo, no lo tenías ya funcionando...? Los comentarios los vas a ver ahí, en el post. Adicionalmente podés seleccionar "publicar en facebook". Entonces saldrá en tu muro que has hecho un comentario en tal sitio.

La notificación del comentario, si usás mi respuesta 2, saldría en el panel de Wordpress.
__________________
nahueljose.com.ar
  #17 (permalink)  
Antiguo 20/02/2012, 20:57
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Aver, perdoname pero ahora estoy enrredado.

Yo se poner el plugin de comentario de facebook en wordpres.

el punto esta en:
si alguien comenta en algun post, nó lo sabes amenos que algun dia entres al post y veas los comentarios, hay te das cuenta que alguien escribio.

Mi pregunta es, cómo sabes tú que alguien ha comentado en cualquier post de tu blog sin tener que revisar todos los post manualmente.

tengo esto ahora en footer:

Código:
  <div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/es_LA/all.js#xfbml=1&appId=134309309932399";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<script>
  //aca creamos un script que se suscribe al evento comment.create
  window.fbAsyncInit = function() {
    FB.Event.subscribe('comment.create', function() { //suscribimos
       //lo que yo ponga aca se ejecutará al hacerse un comentario
       alert('Se hizo un comentario!');
    });  
  }
</script>
Ahora mi pregunta es:
los nuevos comentarios en mi blog, como sabre que han comentado?.
Me llegara la notificacion por facebook?.

Creo que me explique mejor.
Perdoname todas las preguntas y gracias por tu tiempo hermano.
  #18 (permalink)  
Antiguo 21/02/2012, 05:57
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Aparentemente el que no se ha explicado soy yo. Entiendo perfectamente cuál es el problema, por algo hice todo eso... :S
El código de mi segunda respuesta hace lo siguiente:
  1. Al realizarse un comentario, se dispara un evento que envía información a un archivo PHP que envía un email de notificación y agrega metadatos al post
  2. Como los emails no parecían llegar siempre en mi servidor, además de eso se agrega una página en el panel de administración de Wordpress
  3. Dentro de esa página, se listan todos los posts con el metadato que se le agregó al momento de realizado el comentario. O sea, te listará todos los posts con comentarios nuevos y podés marcarlos como leídos una vez que los leas.

O sea, no tenés que entrar a cada post, esa es la idea.
__________________
nahueljose.com.ar
  #19 (permalink)  
Antiguo 21/02/2012, 07:16
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Entiendo, y si no quiero que me envien email cada vez que surga un nuevo comentario?, me gustaria verlo solamente en el wp-admin. Enviar tantos emails puede cargar mucho mi server.
Y marcar comentarios leídos, no tiene mucha prioridad, total estan en facebook y solo interesa leer lo que dice.

Me gustaria ahorrar un poco de codigo y ponerlo en el wp-admin, solo mostrando los comentarios nuevos diciendo e que post, yo mismo entro y respondo, fácil.

Me olvido de agregar el codigo en comments.php y solo agrego el que va en functions.php?

Última edición por RGT; 21/02/2012 a las 07:21
  #20 (permalink)  
Antiguo 21/02/2012, 07:43
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Realmente pensé que había sido claro.

Vamos a empezar de nuevo, paso a paso. Por favor, leé todo y seguí bien los pasos. Si tenés dudas concretas, preguntá lo que quieras.

1.- Descargá estos archivos:http://nahueljose.com.ar/ejemplos/co...s-facebook.zip Ahí tenés 3 archivos. comentarios.php, comentario-leido.php y un ícono de facebook en una carpeta images.
Necesitás editar los 2 archivos PHP y cambiar la ruta que figura arriba por la tuya (la ruta del archivo wp-load.php). Este archivo esta en el directorio de instalación de wordpress y la ruta debe ser absoluta.

2.- Una vez que hayas editado esos archivos, colocalos en la carpeta de tu tema. El ícono debe estar en una carpeta images.

3.- En footer.php colocá esto (Reemplazá lo que ya tenés):

Código PHP:
Ver original
  1. <div id="fb-root"></div>
  2. <script>(function(d, s, id) {
  3. var js, fjs = d.getElementsByTagName(s)[0];
  4. if (d.getElementById(id)) {return;}
  5. js = d.createElement(s); js.id = id;
  6. js.src = "//connect.facebook.net/es_LA/all.js#xfbml=1&appId=134309309932399";
  7. fjs.parentNode.insertBefore(js, fjs);
  8. }(document, 'script', 'facebook-jssdk'));</script>
  9.  
  10. <script>
  11. //aca creamos un script que se suscribe al evento comment.create
  12. window.fbAsyncInit = function() {
  13.     FB.Event.subscribe('comment.create', function() { //suscribimos
  14.     //lo que yo ponga aca se ejecutará al hacerse un comentario
  15.         // Url de la pagina
  16.         var pageURL =  document.location.href;
  17.         // marcar con comentarios nuevos
  18.         $.post(<?php bloginfo('template_directory'); ?>/comentarios.php,{ page_url : pageURL});
  19.     });  
  20. }
  21. </script>

4.- Abrí tu archivo functions.php. Si no existe, crealo. Colocá esto al final:

Código PHP:
Ver original
  1. // *********************************************
  2. // Agregar la pagina de comentarios en el panel
  3. // *********************************************
  4. add_action('admin_menu', 'comentarios_op');
  5.  
  6. function comentarios_op() {
  7.     add_menu_page( 'Comentarios', 'Commentarios', 'read', 'comentarios', 'comentarios_handler',get_bloginfo('template_directory') . '/images/facebook-icon.png');
  8. }
  9.  
  10.  
  11. function comentarios_handler() { ?>
  12.     <div id="fb-root"></div>
  13.     <script>window.fbAsyncInit = function() {
  14.         FB.init({appId: 'TU-AP-ID', status: true, cookie: true, xfbml: true});
  15.     };
  16.     (function(d, s, id) {
  17.       var js, fjs = d.getElementsByTagName(s)[0];
  18.       if (d.getElementById(id)) return;
  19.       js = d.createElement(s); js.id = id;
  20.       js.src = "//connect.facebook.net/es_ES/all.js#xfbml=1&appId=134309309932399";
  21.       fjs.parentNode.insertBefore(js, fjs);  
  22.     }(document, 'script', 'facebook-jssdk'));</script>
  23.     <script>
  24.     jQuery(function(){
  25.         jQuery('a.mark_as_read').click(function(e){
  26.             var anchor = jQuery(this);
  27.             e.preventDefault();
  28.             var page_url = jQuery(this).attr('data-posturl');
  29.             jQuery.post("<?php bloginfo('template_directory'); ?>/comentario-leido.php", { page_url: page_url } , function(data){
  30.                 if(data=='exito'){
  31.                     anchor.parent().parent().fadeOut('fast',function(){
  32.                         jQuery(this).remove();
  33.                         if(!jQuery('').length){
  34.                             jQuery('#wpbody-content').append('<h2>No hay comentarios nuevos.</h2>');
  35.                         }
  36.                     });
  37.                 }else{
  38.                     alert('Hubo un error marcando los comentarios :( Intenta de nuevo re-cargando la pagina');
  39.                 }
  40.             });
  41.            
  42.         });
  43.     });
  44.     </script>
  45.    
  46.     <?php
  47.     global $post;
  48.     $tmp_post = $post;
  49.     $args = array( 'numberposts' => -1 , 'meta_key' => 'comentarios_nuevos', 'meta_value' => 'true');
  50.     $myposts = get_posts( $args );
  51.     $hay_comentarios = false;
  52.     foreach( $myposts as $post ) : setup_postdata($post); $hay_comentarios=true; ?>
  53.     <div style="padding:20px 0; border-bottom:2px dashed #CCC;">
  54.         <h2><a href="<? the_permalink(); ?>"><?php the_title(); ?></a> <iframe src="http://www.facebook.com/plugins/comments.php?href=<?php the_permalink(); ?>&amp;permalink=1" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:130px; height:16px;" allowTransparency="true"></iframe> <a class="mark_as_read" style="font-size:12px; text-decoration:underline; color:red;" data-posturl='<?php the_permalink();?>' href="#">Marcar como leidos</a></h2>
  55.         <p><a href="<? the_permalink(); ?>"><?php echo get_the_post_thumbnail($post->ID, 'thumbnail',array('title'=>get_the_title())); ?></a></p>
  56.         <div class="fb-comments" data-href="<? the_permalink(); ?>" data-num-posts="5" data-width="600"></div>
  57.     </div>
  58.     <?php endforeach; ?>
  59.     <?php if(!$hay_comentarios){ ?>
  60.         <h2>No hay comentarios nuevos.</h2>
  61.     <?php } ?>
  62.     <?php $post = $tmp_post; ?>
  63.    
  64.    
  65. <?php }

5.- Listo.

Nota: Es lo mismo que ya te pasé antes, pero modificado para simplificar y para que funcione como querés. No lo he probado pero debería funcionar. Si encontrás algún error avisame.

Realmente no veo forma de ser más claro y, no es por malo ni nada, pero me parece que ni siquiera estás intentando. Leé, prestá atención y analizá bien el código si tenés dudas.
__________________
nahueljose.com.ar
  #21 (permalink)  
Antiguo 21/02/2012, 08:02
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Hola, ya me sale en wp-admin.

Me dice:
No hay comentarios nuevos.

Si yo mismo comento, me avisa en wp-admin?.
Porque yo comente con mi facebook y no vi nada, siempre decia:
No hay comentarios nuevos.

Otra pregunta, los dos archivos .php son iguales, tienen el mismo codigo, hay diferencia?
  #22 (permalink)  
Antiguo 21/02/2012, 08:07
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

No son iguales.

Los comentarios de facebook es para integrar facebook con tu sitio web. Tenés que comentar en tu sitio para que funcione...
__________________
nahueljose.com.ar
  #23 (permalink)  
Antiguo 21/02/2012, 10:06
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Hola, eso ise, comente en 2 post, y en wp admin no paso nada, la pagina de comentarios esta vacia. no funciona hermano. =(
  #24 (permalink)  
Antiguo 21/02/2012, 10:21
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

¿Me podrías pasar la dirección del sitio? A lo mejor está fallando comentarios.php
__________________
nahueljose.com.ar
  #25 (permalink)  
Antiguo 21/02/2012, 10:30
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Acabo de verlo. El error está acá:

Código PHP:
Ver original
  1. $.post(<?php bloginfo('template_directory'); ?>/comentarios.php,{ page_url : pageURL});

Faltan las comillas en el nombre del archivo :
Código PHP:
Ver original
  1. $.post("<?php bloginfo('template_directory'); ?>/comentarios.php",{ page_url : pageURL});

Esa línea está en el script que va en footer.php

Ahora debería funcionar. Yo marqué como leído uno manualmente, fijate si te sale en el panel.
__________________
nahueljose.com.ar
  #26 (permalink)  
Antiguo 21/02/2012, 12:16
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

El blog es:
www.megalbum.com

Y tampoco funciona, comente 2 veces en diferentes post y no aparece nada en wp admin.
=(
  #27 (permalink)  
Antiguo 21/02/2012, 19:21
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

A simple vista no puedo qué está mal. Vas a tener que hacer un poco de debugging, revisar los códigos, etc.
__________________
nahueljose.com.ar
  #28 (permalink)  
Antiguo 21/02/2012, 20:32
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Hola, yo no entiendo mucho de js, solo segui tus paso.
no funciona =( toy triste
  #29 (permalink)  
Antiguo 23/02/2012, 21:15
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Naahuel, alguna idea so?
  #30 (permalink)  
Antiguo 24/02/2012, 04:53
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 8 meses
Puntos: 656
Respuesta: Uso los comentarios de facebook en mi wordpress, como se que alguien ha co

Por favor, no uses mensajes que no aportan para levantar un tema.
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP

Etiquetas: comentarios, facebook
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 18:07.