【发布时间】:2020-08-03 17:43:45
【问题描述】:
我在这个论坛上检查过类似的问题,但我找不到任何答案来告诉我我该如何做到这一点。
我设置了一个 WP 页面模板,它按字母顺序在 2 列中列出了所有类别(及其相关帖子)。显示类似于下图:
代码运行良好。
但是,我想更改代码,以便我可以传递一个字母(例如,'A'),以便只有以字母'A'(或选择的任何字母)开头的类别 - 和他们的帖子 - 显示出来。
例如,传递字母“A”将导致以下显示:
我使用的代码如下:
<?php
// Grab all the categories from the database that have posts.
$categories = get_terms( 'category', 'orderby=name&order=ASC');
// Loop through categories
echo "<div class='new-column'>";
$counter = 0;
foreach ( $categories as $category ) {
if($counter % 4 == 0 && $counter !=0){
echo "<div class='new-column'>";
}
// Display category name
echo '<h2 class="post-title">' . $category->name . '</h2>';
echo '<div class="post-list">';
// WP_Query arguments
$args = array(
'cat' => $category->term_id,
'order' => 'ASC',
'orderby' => 'title',
);
// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$customfieldvalue = get_post_meta($post->ID, "PDF", true);
?>
<p><a href="<?php echo $customfieldvalue; ?>" target="_blank"><?php the_title(); ?></a></p>
<?php
} // End while
} // End if
echo '</div>';
// Restore original Post Data
wp_reset_postdata();
$counter++;
if($counter % 4 == 0){
echo "</div>";
}
} // End foreach
if($counter % 4 != 0){
echo "</div>";
}
?>
我的问题是,我如何编辑代码,以便将字母('A'、'B'、'C' 等)传递给代码并且只显示以该字母开头的类别?
更新
有人建议 Lafif Astahdziq's 解决方案,不久前在回答另一个问题时发布,也是对我的问题的适当回答。
乍一看可能是这样。但是,在阅读了 Lafif 的回答后,恐怕我无法理解他的代码是如何工作的,以及如何使用它来改进我的代码并解决我的问题。
如果一个特定的答案“完美”,但提出问题的人无法理解,这是否是一个令人满意的结果?
如果我接受 Lafif 的回答,那么我将不得不再问一个问题 - 我如何使用 Lafif 的代码?
最后,我并不想以任何方式嘲笑拉菲夫的回答。我确信它是出于对先前问题的最佳回应。
【问题讨论】:
-
这能回答你的问题吗? Listing custom taxonomy terms by first letter using “name_like" does not work even after filtering query using “term_clauses” hook Lafif Astahdziq 的答案完美无缺,完全符合您的要求!
-
不,这并不能真正回答我的问题。就 PHP 而言,我是初学者,Lafif Astahdziq 的回答虽然在技术上可能是完美的,但对我来说太抽象了。我不知道如何实现它或将它集成到我现有的代码中。
-
您需要做的就是将该函数原样复制到您的functions.php 中。然后你可以在你的
get_terms参数中使用'__first_letter' => $initial_letter。如果你卡住了,请告诉我。它实际上是一个真正的网络解决方案,当你让它工作时你应该考虑支持它:) -
FluffyKittten,感谢您鼓励我坚持 Lafif 的解决方案。在访问了几次 WordPress 代码参考之后,我设法让它工作了。同意,很整洁。
-
很高兴你能成功!你遇到了什么问题?当我把它放在我的functions.php中时,它立即对我有用。我不需要改变任何东西。如果您让我们知道问题,我们可以添加到答案中以向其他用户澄清。我已经看到了很多关于这个问题的答案,而这个答案是迄今为止最简单、最干净、侵入性最小的解决方案——你需要对实际 SQL 做的事情越少越好:)