这是一个有点复杂的公式(或者可能只是我现在太累了),但我会尝试清楚:
我想为用户喜欢的帖子创建归档页面。这将类似于作者页面,例如:
author pages: domain.tld/author/%USER%/(page/x/)
liked pages: domain.tld/likedby/%USER%/(page/x/)
我可以通过我的sql查询获得当前用户喜欢的帖子,如下所示(我使用wp\\u ulike插件):
$sql = "
SELECT * FROM wp_ulike WHERE user_id = \'" . $user_id . "\'
AND status = \'like\'
ORDER BY wp_ulike.date_time DESC
LIMIT " . $offset . ", " . $post_per_page . "; ";
$user_logs = $wpdb->get_results( $sql, OBJECT );
但是,如何创建页面模板,如
category.php
,
tag.php
或
author.php
, 到我的元数据查询,那么如何制作模板(如
likedby.php
), 如何使用我的所有用户的尼克生成动态页面,如下所示:
domain.tld/likedby/%USER%/(page/x/)
?
我的第一个想法是创建一个自定义分类法(likedby),并使用一个函数将我的用户名添加到此分类法中,如$tags
... 所以在本例中,就是这样,创建动态页面的是什么,我为这个自定义分类法创建了一个模板,真正使用sql查询的是什么。。。但这并不那么优雅,因为分类法将是空的,只需要创建页面。。。所以我希望有一个针对性的解决方案。。。
(也许我的问题不太清楚,反过来我在网上找不到关于这个问题的任何信息,但也许我只是使用了不好的关键字,如果你知道,那是什么,我需要搜索什么,请写一条评论,任何想法都是有帮助的!)
最合适的回答,由SO网友:Milo 整理而成
一种相当简单的方法是使用slug创建一个新页面likedby
, 然后添加一些重写规则来处理额外的参数。
首先,保存请求的用户名的查询变量:
function wpd_likedby_query_var( $query_vars ) {
$query_vars[] = \'likeduser\';
return $query_vars;
}
add_filter( \'query_vars\', \'wpd_likedby_query_var\' );
然后是几个重写规则来处理请求,将它们定向到
likedby
页面并设置额外参数:
function wpd_likedby_rules(){
add_rewrite_rule(
\'likedby/([^/]+)/page/?([0-9]{1,})/?$\',
\'index.php?pagename=likedby&likeduser=$matches[1]&paged=$matches[2]\',
\'top\'
);
add_rewrite_rule(
\'likedby/([^/]+)/?$\',
\'index.php?pagename=likedby&likeduser=$matches[1]\',
\'top\'
);
}
add_action( \'init\', \'wpd_likedby_rules\' );
然后可以创建
page-likedby.php
模板并将自定义查询放在其中。使用
get_query_var( \'likeduser\' )
和
get_query_var( \'paged\' )
获取查询参数。
我还建议wpdb::prepare()
用于生成接受未知输入的查询。