如何为元数据查询生成的帖子创建存档页面(所以没有分类)?

时间:2018-06-23 作者:Galgóczi Levente

这是一个有点复杂的公式(或者可能只是我现在太累了),但我会尝试清楚:

我想为用户喜欢的帖子创建归档页面。这将类似于作者页面,例如:

 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.phpauthor.php, 到我的元数据查询,那么如何制作模板(如likedby.php), 如何使用我的所有用户的尼克生成动态页面,如下所示:domain.tld/likedby/%USER%/(page/x/)?

我的第一个想法是创建一个自定义分类法(likedby),并使用一个函数将我的用户名添加到此分类法中,如$tags... 所以在本例中,就是这样,创建动态页面的是什么,我为这个自定义分类法创建了一个模板,真正使用sql查询的是什么。。。但这并不那么优雅,因为分类法将是空的,只需要创建页面。。。所以我希望有一个针对性的解决方案。。。

(也许我的问题不太清楚,反过来我在网上找不到关于这个问题的任何信息,但也许我只是使用了不好的关键字,如果你知道,那是什么,我需要搜索什么,请写一条评论,任何想法都是有帮助的!)

1 个回复
最合适的回答,由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() 用于生成接受未知输入的查询。

结束

相关推荐

Custom archives function

我正在为我的教会网站建立一个自定义档案页面。在我的档案页上,我想把上周的布道放在一个特殊的盒子里,然后是未来的布道,最后是布道档案。我希望将来的布道和布道档案用标题隔开。。。i、 未来的布道布道档案布道档案。。。我的问题是,当我用分页功能点击按钮转到旧的布道帖子时,它会在我所在的每个归档页面上显示当前和未来的布道!如何使当前和未来的布道仅显示在第1页上,而不在单击查看旧帖子时显示?以下是我的功能:// Create the loop for the sermons page function se