2010-12-26 34 views

Respuesta

12

poner esto en su functions.php:

add_filter('comment_post_redirect', 'redirect_after_comment'); 
function redirect_after_comment($location) 
{ 
return $_SERVER["HTTP_REFERER"]; 
} 
+1

¡Esto funciona perfectamente! ¡Muchas gracias! –

+1

me salvaste el día :) – xsari3x

-1
$ref = $_SERVER["HTTP_REFERER"]; 
header("Location: $ref"); 
+0

Gracias, pero ¿Dónde pongo esto? Lo siento, soy nuevo en php y Wordpress en general. Gracias por tu ayuda. –

+0

WP nunca usado, lo siento. Busque la función o el archivo donde ocurre la inserción de comentarios, luego de que se inserta un comentario en la base de datos, cuando ocurre la redirección, generalmente se usa la función de encabezado, o tal vez WP tiene su función de redirección interna; de todos modos, puede enviar el encabezado y guión de salida. –

3

Utilice WordPress Plugin API. Es la forma correcta de ampliar o personalizar la funcionalidad en WordPress. Una vez que haya leído un poco acerca de la API, consulte la Referencia de acción (Publicaría el enlace pero StackOverflow no me dejará).

Usted necesitará por lo menos dos ganchos de acción para completar su tarea:

  1. comment_post - ejecutar directamente después de añadir un comentario a su base de datos
  2. comment_form - carrera cada vez que el formulario de comentarios es impreso desde una plantilla de tema

Básicamente, queremos capturar la variable HTTP_REFERER en el persistente $ _SESSION siempre que el usuario f Primero ve el formulario de comentarios. Luego los redirigiremos una vez que publiquen el comentario.

Crear comment-redirect.php en la carpeta WordPress wp-content/plugins.
He aquí una idea aproximada de lo que pondría en este archivo (lo dejo a usted para refinar/probarlo):

<?php 
/* 
Plugin Name: Post Comment Redirect 
Plugin URI: http://example.com 
Description: Redirects you to the previous page after posing a comment 
Version: 0.1a 
Author: Anonymous 
Author URI: http://example.com 
License: GPL2 
*/ 

// Run whenever a comment is posted to the database. 
// If a previous page url is set, then it is unset and 
// the user is redirected. 
function post_comment_redirect_action_comment_post() { 
    if (isset($_SESSION['PCR_PREVIOUS_PAGE_URL'])) { 
    $ref = $_SESSION['PCR_PREVIOUS_PAGE_URL']; 
    unset($_SESSION['PCR_PREVIOUS_PAGE_URL']); 
    header('Location: '.$ref); 
    } 
} 

// Run whenever comment form is shown. 
// If a previous page url is not set, then it is set. 
function post_comment_redirect_action_comment_form() { 
    if (!isset($_SESSION['PCR_PREVIOUS_PAGE_URL'])) { 
    if ($ref = $_SERVER['HTTP_REFERER']) { 
     $_SESSION['PCR_PREVIOUS_PAGE_URL'] = $ref; 
    } 
    } 
} 

add_action('comment_post', 'post_comment_redirect_action_comment_post'); 
add_action('comment_form', 'post_comment_redirect_action_comment_form'); 

vez que haya guardado su plugin, activarlo en el wp-admin plugins sección (generalmente se encuentra cerca de h ** p: //su-sitio-website.com/wp-admin).

+1

¡Guau, gracias! Aunque casi no tengo ni idea de qué hacer con esto. Guardé el archivo y activé el complemento y parece que no funciona como está, pero creo que tendré que jugar con él. –

Cuestiones relacionadas