请跟我说实话,因为我是自学成才的,并且尽可能多地学习。我将尽可能多地提供我从研究这个问题中学到的信息。
My Goal/The Problem: 允许读者使用可单击的链接或下拉表单对一类帖子进行排序。现在,我们将只使用可点击的链接“按日期排序”和“按标题排序”。我如何做到这一点?这样做的最佳方法是什么?
What I have- The Base: 多亏了Stack Exchange的用户,我才能够在与页面名称匹配的类别中检索帖子页面。如果页面名为Show Rants,那么它将显示类别Show Rants中的所有帖子。这是它的样子(谢谢PeterG)。
这是相关的,因为我想保持按page name=cat name检索帖子的相同格式。
<?php
$args = [
\'category_name\' => get_queried_object()->post_name,
\'order\' => \'DESC\',
\'orderby\' => \'date(post_date)\'
// Add any extra parameters you need
];
$q = new WP_Query( $args );
// Run the loop
if ( $q->have_posts() ) {
while ( $q->have_posts() ) {
$q->the_post();
get_template_part( \'content\', get_post_format() );
}
wp_reset_postdata();
}
?>
在上面的示例中,我们使用的是WP\\u Query,这对我来说很重要(主要是对我自己),因为在此之前我一直在使用Query\\u帖子。
后端一种排序类型的结果也是如此。现在,我想在前端执行多个orderby。
以下是我遇到或尝试过的方法:
query_post: 我之前在做一个query\\u posts排序。第一个问题是它是query\\u posts!这周我明白了这绝对不是我想走的路线。WP\\U查询更优越、更安全。这是我的总代码。第二个问题是,它不会从该页面命名的类别中调用帖子(这不是什么问题)
<?php $sort= $_GET[\'sort\'];
if($sort == "title"){
$order= "orderby=title";
}
if($sort == "date"){
$order= "orderby=date";
}
?>
<?php get_header(); ?>
<div class="content-container">
<h2><?php the_title(); ?></h2>
<a href="?sort=title">Sort By Title</a>
<a href="?sort=date">Sort By Date</a>
<?php query_posts($order.\'&order=ASC\'); ?>
<ul>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<li> <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile;
endif;
wp_reset_query();?>
</ul>
</div>
现在,如果我可以在WP\\u查询中得到这个,那么我们就可以全部设置好了。不过我还是很难弄清楚这一点。这就是我下一次的尝试。
WP_Query:Frankensteining上面的两个例子以及我在Codex中学到的知识,我创建了一段不起作用的代码,这并不奇怪。尽管我知道这是绝对错误的,但无论如何我都会把它贴出来,所以不要再嘲笑了。我想知道我是否很接近。
<?php
$args= [
\'category_name\' => \'animoo-reviews\',
\'order\' => \'DESC\',
\'orderby\' => \'date(post_date)\'
];
$A = new WP_Query( $args );
while ( $A->have_posts() ) {
$A->the_post();
echo \'<li>\' .get_the_title() .\'</li>\';
}
wp_reset_postdata(); /*instead of wp_reset_query?*/
/* 2nd Query Sort? */
$args2= [
\'category_name\' => \'animoo-reviews\',
\'order\' => \'ASC\',
\'orderby\' => \'title\'
];
$B = new WP_Query($args2);
// Loop 2?
while( $B->have_posts()) {
$B->the_post();
echo \'<li>\' .get_the_title() .\'</li>\';
}
//Restoring original post data
wp_reset_postdata();
?>
问题是它能工作,但不是我想象的那样,我甚至不知道如何链接它以便用户可以排序。正如我应该猜到的,它将以一种排序顺序弹出前6条帖子,然后以另一种顺序弹出另外6条帖子。更近,但不是真的那么近。
编辑:Woops,我意识到这基本上只是Codex的多回路示例。我尝试将其连接到URL,但没有成功。我就把它放在这里,因为我想表明我至少尝试了一些与问题相关的东西。对于category\\u name,我可以始终使用get\\u queryed\\u object->post\\u name。我之前玩的时候只是在简化它。
add_query_arg: 经过几天的研究,我有几次偶然发现了这个选项。理论上,从人们谈论它的方式来看,这似乎很容易。给出一个URL,该URL将以一种方式对帖子进行排序,另一个URL将以另一种方式对帖子进行排序。我必须操纵这些函数。php文件。在我研究了项目的另一个问题之后,我计划今天解决这个问题。
如果有人能告诉我怎么做,我将不胜感激。我对此很陌生,但事实上,我每天都在学习突飞猛进。有时事情对我来说不像对其他人那样明显(比如抄本上写的东西)。
再一次the goal:
允许读者以多种方式对帖子进行排序。(可选,但将是coolbeans)如果帖子可以来自页面命名的类别。
What I don\'t want:
插件。你可以根据自己的意愿提出一个方便的插件,但我真的需要从头开始学习。任何事情都需要一个插件,这只会在一开始就削弱我的学习能力。
再次感谢您抽出时间。