关于WordPresspost paged, 我会使用/player-12345
或作为url特定页面的其他结构,而不是/player/12345
.
这是与url结构相关的示例代码/player-12345
. 确保您的页面slug是player
. 在主题文件中添加此代码functions.php
或者在插件中。
add_filter( \'page_rewrite_rules\',\'my_insert_rewrite_rules\' );
add_filter( \'query_vars\',\'my_insert_query_vars\' );
add_action( \'wp_loaded\',\'my_flush_rules\' );
// flush_rules() if our rules are not yet included
function my_flush_rules()
{
$rules = get_option( \'rewrite_rules\' );
if ( ! isset( $rules[\'(player)-(\\d*)$\'] ) )
{
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
// Adding a new rule page slug with number
function my_insert_rewrite_rules( $rules )
{
$newrules = array();
$newrules[\'(player)-(\\d*)$\'] = \'index.php?pagename=$matches[1]&player_id=$matches[2]\';
return $newrules + $rules; //combine all page rules
}
// Adding the player_id var so that WP recognizes it
function my_insert_query_vars( $vars )
{
array_push( $vars, \'player_id\' );
return $vars;
}
现在您有了用户id为的url结构页面
/player-12345
, 基于数据库在首页中创建页面链接。您可以使用
get_page_link
并与您的列表用户id相结合。
创建页面或自定义页面,然后如何在前端显示我们的用户数据?
Create new page (带弹头的玩家player
从admin),它将使用默认值page.php
模板,您可以使用它。但如果您需要在不同的布局中创建新的文件主题page-{slug}.php
(没有模板名称)是我首选的方法,在您的情况下page-player.php
.
从中创建重复代码page.php
, 并根据需要进行定制。您不必创建自定义wp_query
内有回路。只需使用普通循环wp_query
按原样。
因为我们有额外的查询参数页是player_id
具有用户ID值,具有get_query_var( \'player_id\' )
它使检索用户数据变得容易。
这是显示用户数据的简单代码,我只使用用户查询,您可以使用新表中的数据实现。筛选the_content
具有检索用户数据和保留原始页面内容的功能(您也可以覆盖)。外接程序functions.php
.
add_filter( \'the_content\', \'my_the_content_filter\' );
/**
* Filter page content
* by filter the_content
* Use condition statement is_page( slug ) with get_query_var( \'player_id\' )
*
* @param string $content Oringinal text
* @return string New Content with or without original text
*/
function my_the_content_filter( $content )
{
if ( is_page( \'player\' ) && ! empty( get_query_var( \'player_id\' ) ) )
{
$player_id = intval( get_query_var( \'player_id\' ) );
/**
* Add user info only ( overwrite page content )
$content = _my_function_player_info( $player_id );
*/
/**
* Include your page content and additional content of user info
*/
$content .= _my_function_player_info( $player_id );
}
return $content;
}
/**
* Set your user data, html, table, etc
* @see param https://developer.wordpress.org/reference/functions/get_user_by/
* @param integer $player_id User ID
* @return string User data front-end
*/
function _my_function_player_info( $player_id )
{
ob_start();
$user = get_user_by( \'id\', intval( $player_id ) );
?>
<table>
<tr>
<td><?php _e( \'Name\', \'text_domain\' ); ?></td>
<td><?php echo $user->first_name . \' \' . $user->last_name; ?></td>
</tr>
</table>
<?php
$html = ob_get_clean();
return $html;
}
其他筛选器,如
loop_start
或
loop_end
要在内容循环之前或之后显示用户数据,请使用
echo
在输出中,或直接在自定义页面中实现您的功能。只要根据需要滥用此代码即可。