代码不能与POST名称永久链接设置一起使用帮助

时间:2017-03-14 作者:Nelson101

我正在编写一个简单的附属插件,它可以执行以下操作:

我的问题是,它只在永久链接设置为普通时有效,这是什么?page\\u id=342当我将其设置为post name时,我得到404错误,并且没有设置cookie。代码有什么问题?

<?php
add_action(\'init\', \'affiliate_redirect\');
function affiliate_redirect() {
$varname = \'affid\';
$weeks = \'4\';
if( isset($_GET[$varname]) && \'\' != $_GET[$varname] ) {
setcookie(\'wp_affiliate\', $_GET[$varname], time()+648000*$weeks, \'/\');
$pageURL = \'http\';
if ( isset( $_SERVER["HTTPS"] ) && strtolower( $_SERVER["HTTPS"] ) ==        "on" ) {
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .=     $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]    ;
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
$url = preg_replace(\'/([?&])\'.$varname.\'=[^&]+(&|$)/\',\'$1\',$pageURL);
$last = $url[strlen($url)-1];
if ($last == \'?\') {
$url = substr_replace($url ,"",-1);
}
wp_redirect($url);
exit;
}
}
?>

1 个回复
最合适的回答,由SO网友:Paul \'Sparrow Hawk\' Biron 整理而成

我不知道你为什么会得到404,因为当我用permalinks=“Post name”运行你的代码时,它运行得很好。

但是,我建议您使用remove_query_arg() 而不是所有的阴谋,你正在做的是产生URL重定向到。也就是说,您可以将代码简化为:

function
affiliate_redirect ()
{
    $varname = \'affid\' ;
    $weeks = \'4\' ;
    if (isset ($_GET[$varname]) && \'\' != $_GET[$varname]) {
        setcookie (\'wp_affiliate\', $_GET[$varname], time () + 648000 * $weeks, \'/\') ;

        $url = remove_query_arg ($varname) ;
        wp_redirect ($url) ;

        exit ;
        }

    return ;
}
试试看它是否能解决404问题。

相关推荐

更新页面(update-core.php)和插件页面(plugins.php)恢复到主页

我在Wordpress网站的管理视图中收到通知,我有一个网站和插件的可用更新(在我的网络管理仪表板中,在“插件”和“更新”旁边的红色圆圈中有“1”)。。。但当我尝试同时转到“更新”页和;插件页面,是否显示主页?此时的URL为http:///wp-admin/network/update-core.php/和http:///wp-admin/plugins.php/分别地因此,我永远无法到达真正的更新页面,也无法更新我的Wordpress或插件。如何显示更新或插件页面?