我发现有两种方法可以做到这一点:
具有自定义重写规则的作者页面自定义模板文件与重写规则配对第一个更容易实现,但可能无法在所有情况下都工作(我将很快介绍其中一个)。
下面是代码和注释:
// Define the author levels you want to use
$custom_author_levels = array( \'user\', \'leader\' );
// On init, add a new author_level rewrite tag and add it to the author_base property of wp_rewrite
add_action( \'init\', \'wpleet_init\' );
function wpleet_init()
{
global $wp_rewrite;
$author_levels = $GLOBALS[\'custom_author_levels\'];
// Define the tag and use it in the rewrite rule
add_rewrite_tag( \'%author_level%\', \'(\' . implode( \'|\', $author_levels ) . \')\' );
$wp_rewrite->author_base = \'%author_level%\';
}
// The previous function creates extra author_name rewrite rules that are unnecessary.
//This function tests for and removes them
add_filter( \'author_rewrite_rules\', \'wpleet_author_rewrite_rules\' );
function wpleet_author_rewrite_rules( $author_rewrite_rules )
{
foreach ( $author_rewrite_rules as $pattern => $substitution ) {
if ( FALSE === strpos( $substitution, \'author_name\' ) ) {
unset( $author_rewrite_rules[$pattern] );
}
}
return $author_rewrite_rules;
}
然后可以使用内置的作者。php模板,修改您的心形内容。
诚恳地,检查上面列出的链接,因为简·法布里在解释一切方面做得很好。
查询变量和页面模板对于我在发现这些解决方案时正在处理的主题,我需要基于用户元值(一个单独的ID)提供一个自定义页面。我的客户不希望用户名或用户ID公开可见,因此我们创建了一个单独的层。
唯一的问题是什么?目前,还没有一种明确的方法可以使用重写API通过元键/值进行查询。幸运的是,有一个解决方案。
在您的功能中。php文件。。。
// Create the query var so that WP catches your custom /user/username url
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\'
);
完成此操作后,只需在提供查询var时“捕获”,然后重定向到您选择的模板:
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;
}
}
只需确保您已经创建了用户配置文件。php。
在我自己的示例中,我创建了第三个函数,该函数通过$wpdb->usermeta表将“public User ID”与实际的User\\u ID相匹配,并将信息传递给模板。
如果需要创建不同于主题其余部分的模板,请记住,使用get\\u header可以指定名称:
get_header( \'user\' );
将调用标头用户。php文件。
结论这两种方法都是有效的有效解决方案。第二层提供了单独的“安全”层,因为如果其他人能够浏览配置文件,它不会显示用户ID或用户名。
希望这有帮助,如果你有任何问题,请告诉我。