2010-12-26 2 views
7

У меня есть комментарии на разных типах страниц в Wordpress (архив, тег, поиск, главная страница), и после того, как пользователь отправляет комментарий, я бы хотел, чтобы они были перенаправлены на их ссылочную страницу, а не на одну страницу сообщения , Есть идеи?В wordpress, как перенаправить после комментария обратно на ссылочную страницу?

ответ

12

Поместите это в functions.php:

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

Это работает отлично! Спасибо! –

+1

u спас мой день :) – xsari3x

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

Спасибо, но где бы это? К сожалению, я новичок в php и Wordpress в целом. Спасибо за вашу помощь. –

+0

Никогда не использовал WP, извините. Посмотрите на функцию или файл, где происходит вставка комментариев, после того, как комментарий вставлен в базу данных, при этом происходит перенаправление, обычно используется функция заголовка, или, возможно, WP имеет внутреннюю функцию перенаправления, в любом случае вы можете отправить сценарий заголовка и выхода. –

3

Используйте WordPress Plugin API. Это правильный способ расширения или настройки функций в WordPress. После того, как вы немного ознакомились с API, проверьте ссылку на действие (Я бы опубликовал ссылку, но StackOverflow не позволит мне).

Вам потребуется по крайней мере два крючка действия, чтобы завершить задачу:

  1. comment_post - работать непосредственно после того, как комментарий будет добавлен в базу данных
  2. comment_form - бег, когда форма комментария напечатанный с шаблона темы

В принципе, мы хотим захватить переменную HTTP_REFERER в постоянной $ _SESSION всякий раз, когда пользователь f Первая видит форму комментария. Затем мы перенаправляем их после публикации комментария.

Создать comment-redirect.php в WordPress wp-content/plugins папку.
Вот примерное представление о том, что вы бы поместить в этот файл (я оставляю это до вас, чтобы уточнить/проверить его):

<?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'); 

После того, как вы сохранили ваш плагин, включите его в WP-администратора Плагины (обычно находится около h ** p: //your-website-address.com/wp-admin).

+1

Ничего себе, спасибо! Хотя я почти не знаю, что с этим делать. Я сохранил файл и активировал плагин, и он не работает так, как есть, но я думаю, мне придется играть с ним. –

Смежные вопросы