重写的URL中的用户名,如何在模板中使用它

时间:2013-04-11 作者:user31336

在我的网站上,可以在/user/xxx上访问用户配置文件。现在,我创建了一个重写规则,所有用户链接都在模板页面上处理。但是如何访问模板文件中的xxx(用户)?页面应显示xxx的个人资料。重新布线规则:

add_filter( \'query_vars\', \'wpleet_rewrite_add_var\' );
function wpleet_rewrite_add_var( $vars )
{
$vars[] = \'user\';
return $vars;
}
add_rewrite_tag( \'%user%\', \'([^&]+)\' );
add_rewrite_rule(
\'^user/([^/]*)/?\',
\'index.php?user=$matches[1]\',
\'top\'
 );
 add_action( \'template_redirect\', \'wpleet_rewrite_catch\' );
 function wpleet_rewrite_catch()
 {
 global $wp_query;

 if ( array_key_exists( \'user\', $wp_query->query_vars ) ) {
    include (TEMPLATEPATH . \'/user-profile.php\');
    exit;
}
}

2 个回复
SO网友:user31336

我创建了一个新函数,用它可以获得用户名。使用它有什么问题吗?还是有更干净的方法?

function getmyuser() {
$test = substr($_SERVER["REQUEST_URI"], strrpos($_SERVER["REQUEST_URI"],"/user/")+6);
return str_replace(\'/\',\'\', $test);
}

SO网友:Ruben Woudsma

虽然我对你的问题并不完全清楚,但我试图根据一些假设来回答它。

Assumption - 您已使用以下代码更改了基本slug:

add_action(\'init\', \'wpa95490_new_author_base\');
function wpa95490_new_author_base() 
{
    global $wp_rewrite;
    $author_slug = \'user\';
    $wp_rewrite->author_base = $author_slug;
}
Assumption #2 - 您希望模板中的每个用户都有一个作者模板。

如果这是正确的,那么您要使用author.php 在使用此文件显示作者信息时对此进行处理。作者模板可用于以下目标和顺序:

作者{id}。php作者{nicename}。php作者。WordPress将首先检查author-42是否存在页面。php或作者ruben。php。如果没有指定特定的作者模板,它将依赖于作者。php(如果找不到author.php,它将返回archive.php或index.php)。

在你的情况下,我建议你使用author-{nicename}.php 为了让这一切顺利进行。如果您只想更改作者的特定部分,理想情况下可以使用该功能get_template_part() 为了这个。

另一方面,您还可以根据this article 并显示添加的信息和以下代码the_author_meta( \'new-property\' ).

结束

相关推荐