1

我正在使用 wordpress,我正在尝试将用户名 var 从 www.mysite.com/username 传递给 wordpress 页面中的 var。我有多个问题。我不知道重写是否不起作用,并且 wordpress 页面注释掉了我的 php.ini 文件。有什么建议么?有谁知道如何做到这一点?

.htaccess 文件:

RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteRule ^([^/.]+)$ /index.php?username=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
4

2 回答 2

3

您不能将 www.mysite.com/username 的 var 传递给 WordPress 页面中的 var,因为这意味着所有链接都将指向同一个页面,而与用户名相关的 var 会产生很多冲突和很多问题。

我可以在创建个人资料页面时与您分享我的代码。EG:个人资料并拥有漂亮的永久链接,例如 www.mysite.com/profile/eek

这将访问我在主题中设置为 page-profile.php 的 Wordpress 页面配置文件,并将下一个变量(例如:Eek)放入一个变量中,在我的示例中它将是一个 $who 变量。

将此添加到functions.php

add_filter( 'page_rewrite_rules', 'profile_page_rewrite_rules' );
function profile_page_rewrite_rules( $rewrite_rules )
{
    end( $rewrite_rules );
    $last_pattern = key( $rewrite_rules );
    $last_replacement = array_pop( $rewrite_rules );
    $rewrite_rules +=  array(
        '(.+?)/([^/]+)/?$' => 'index.php?pagename=$matches[1]&who=$matches[2]',
        $last_pattern => $last_replacement,
    );
    return $rewrite_rules;
}

add_rewrite_tag('%who%','([^&]+)');

然后从“设置”->“永久链接设置”->“保存”更新永久链接。

并在 page-profile.php

为了获取当前用户,我有这个片段:

<?php  $who = (get_query_var('who')) ? get_query_var('who') : 0; 
        if($who){$user = get_user_by('login', $who);}

        else{
            if( is_user_logged_in() ){
                $user = wp_get_current_user();
            }else{$user = 0;}
        }
?>

在此处向 WordPress 添加重写规则的更多详细信息:http: //codex.wordpress.org/Rewrite_API/add_rewrite_rule

另外,我正在使用一个很酷的插件来调试我的重写,就是这个:http ://wordpress.org/plugins/monkeyman-rewrite-analyzer/ (是的,它已经 2 岁了,但它仍然像魅力一样工作)。

希望这有帮助!

于 2013-07-07T13:41:28.810 回答
0

如果我理解了这个问题,那么你的方法是错误的......所以实际上你可能会遵循这种方式(以防 2018 年的任何人仍然会落入这个答案)

http://mywordpress/?u=myusername

但也可能是:

https://www.axew3.com/w3/dropbox/?u=axew3

只需检查传递的变量:

$_GET['u'];

但也许我误解了这个问题......

于 2018-04-09T13:25:59.620 回答