Wp_reDirect()函数不起作用

时间:2012-03-21 作者:SANS780730

wp_redirect($post->guid) 不工作。我怎样才能解决这个问题?

这是我的代码:

if(isset($_REQUEST[\'vid\']) ){

    $id=$_REQUEST[\'vid\'];

    $post_title = \'sasa\';

    $post_content =\'zxczxczxc\';

    $new_post = array(
      \'ID\' => \'\',
      \'post_author\' => $user->ID, 
      \'post_content\' => $post_content,
      \'post_title\' => $post_title,
      \'post_status\' => \'publish\',
      // NOW IT\'S ALREADY AN ARRAY

    );

    $post_id = wp_insert_post($new_post);

    // This will redirect you to the newly created post
    $post = get_post($post_id);
    $url=$post->guid;

    wp_redirect($post->guid);

} 

8 个回复
SO网友:Stephen Harris

这里有两个问题:

不要使用$post->guid 作为url,您must exit() 使用后wp_redirect() (see the Codex)

wp_redirect() 不会自动退出,并且几乎总是在退出之后要重定向到新帖子的页面:

//..... code as in question
$post_id = wp_insert_post($new_post);
$url = get_permalink( $post_id );
wp_redirect($url);
exit();

SO网友:yogesh

我有一个简单的解决方案,请阅读:

如果您正在使用wp_redirect($url) 在主题文件中,它不工作添加ob_clean() ob_start() 在顶部的函数文件中。

如果在插件添加中使用ob_clean() ob_start() 在顶部的主插件文件中。

并确保已添加exit() function after wp_redirect($url) 像这样:

$url = \'http://example.com\';
wp_redirect($url);
exit();

SO网友:user6181996

我不确定这是否有帮助。。。但我发现我在模板中有一些代码,我从get\\u header()开始是这样的:

<?php
/**
 * .. Template comments
 */

 get_header();

 if(...) {
    ...
    if(...) {
      ...
      wp_redirect($url);
      exit();
    }
 }
 ?>
并且收到了之前发送的相同版本的标题。。。我所做的只是将get\\u header()移到块的末尾,瞧!!!

<?php
/**
 * .. Template comments
 */


 if(...) {
    ...
    if(...) {
      ...
      wp_redirect($url);
      exit();
    }
 }
 get_header();
 ?>
没有禁用插件。一切都很好。。。如果这对你有用,你可以试试

SO网友:soulseekah

永远不要使用帖子GUID值,它不必与帖子的真实URL匹配。

http://codex.wordpress.org/Changing_The_Site_URL#Important_GUID_Note

wp_redirect( get_permalink( $post_id ) );
exit(); // always exit
另外,确保wp_redirect 未被其他阻止其正常工作的东西堵塞。停用所有插件并恢复到2011年10月20日进行检查。

SO网友:Farhat Aziz

标题已发送是主要原因。由于标头已发送,因此无法重新发送,并且无法重定向。在头之前使用,就像在init hook中一样。

add_action(\'init\', \'your_app_function\');

SO网友:Fury

确保您没有:get_header(); 或者任何可能在模板中创建页眉和页脚等内容的wordpress函数。否则重定向将不起作用。

一些开发人员试图通过使用ob_start(); 但是如果您的页面中有内容,即使您使用ob_start(); 重定向无效。

然后简单地尝试以下代码:

wp_redirect(get_permalink($post->ID));
exit;

SO网友:Golap Hazi
if( is_page( [\'wfp-dashboard\', \'wfp-checkout\'] ) ){
   if(!is_user_logged_in()){
      @ob_flush();
      @ob_end_flush();
      @ob_end_clean();
      wp_redirect( wp_login_url() );
      exit();
   }
}
SO网友:rahmat hidawe

我这里也有同样的问题,我只是尝试一下

add_action( \'init\', \'my_function_name\'); or add_action( \'wp_head\', \'my_function_name\'); but it\'s not working
最后,我得到了一个可以完美重定向的钩子,下面是我的完整代码functions.php

function redirect_homepage(){
    ob_clean();
    ob_start();
    $args = array(
        \'public\'   => true,
        \'_builtin\' => false,
     );
    
     $output = \'names\'; // names or objects, note names is the default
     $operator = \'and\'; // \'and\' or \'or\'
    
     $post_types = get_post_types( $args, $output, $operator ); 
        if(is_singular($post_types)){

            $url = get_bloginfo(\'url\');
            wp_redirect($url, \'301\');
            exit();
    }
}
add_action( \'template_redirect\', \'redirect_homepage\');
使用挂钩即可add_action( \'template_redirect\', \'my_function_name\');

Nb: i use child-theme

结束

相关推荐

Login redirect problem

嘿,我有点奇怪的问题。。我得到了一个表单,可以根据类别和用户级别登录某些单曲。。它工作得很好,但windows(网站所在的服务器)返回的“当前页面”值错误意思这是:\'redirect\' => site_url( $_SERVER[\'REQUEST_URI\'] ), 返回:www.somewebsite。com/sub/sub/?p=100而不是:www.somewebsite。com/sub/?p=100This is the actuall form: <