_POST钩子对我不起作用

时间:2017-04-02 作者:user1889580

我这里有一个非常简单的要求。我为所有帖子添加了一个元字段,允许使用url重定向帖子(我有这样做的理由)。我试图在“the\\u post”中触发此操作,但出于某种原因,它似乎没有触发。这是我补充的

function nb_checkredirect($post)
{
    if(get_post_meta( $post->ID, \'nb_postredirect\', true ) != "") 
    {
        header(\'Location: \'.get_post_meta( $post->ID, \'nb_postredirect\', true ));
        wp_die();
        die();
    }
}
add_action( \'the_post\', \'nb_checkredirect\' );
我已经检查了PHP错误日志的输出,似乎没有任何问题。

2 个回复
最合适的回答,由SO网友:CK MacLeod 整理而成

假设您的post\\u meta被正确添加,所讨论的帖子是真实的帖子,并且“nb\\u postdirect”的值是一个很好的URL,我会尝试:

function nb_checkredirect( $post ) {

    //don\'t have to use get_post_meta!*
    if ( $post->nb_postredirect ) {

        wp_redirect( $post->nb_postredirect );

        exit;

    }

}

add_action( \'the_post\', \'nb_checkredirect\' );
在我自己的网站上测试。

*这是在检查这个问题时学到的-非常好。

SO网友:Shivanand Sharma

在加载页面之前,必须发送重定向标头。请挂接到template\\u重定向

function my_page_template_redirect()
{
    if( get_post_meta( $post->ID, \'nb_postredirect\', true ) != "" )
    {
        wp_redirect( get_post_meta( $post->ID, \'nb_postredirect\', true ) );
        exit();
    }
}
add_action( \'template_redirect\', \'my_page_template_redirect\' );
请参见:

  1. https://codex.wordpress.org/Plugin_API/Action_Reference/template_redirect
  2. https://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。