在查看我发现的有关此事的每个网站后,我发布了这个问题。没有一个答案给了我解决这个问题的线索,谷歌的结果被完全不同的主题所污染。
我想要实现的是显示搜索查询返回的帖子的类别列表。 最终的想法是实现这样的目标。 (请记住,这些城市中的每一个都是一个类别)
用户将搜索帖子,然后转到显示结果的结果。我需要做的是找到返回的所有帖子的类别,并尝试在每个帖子上执行post_count,以显示在该特定类别中有多少帖子(所有返回的帖子)。
提前致谢。
答案 0 :(得分:2)
由于您没有提供任何代码,我尝试了我的方式。我猜,实现它的不是最佳方式 但截至目前,您可以这样做。
在这里,我使用PHP
来实现期望的结果。
我使用了二十四个主题search.php
。
这是Twenty Fourteen主题search.php
的我的代码,您可以在search file
中实施:
<?php
/**
* The template for displaying Search Results pages
*
* @package WordPress
* @subpackage Twenty_Fourteen
* @since Twenty Fourteen 1.0
*/
get_header(); ?>
<section id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentyfourteen' ), get_search_query() ); ?></h1>
</header><!-- .page-header -->
<?php
// Start the Loop.
$post_id_array = array(); //Blank array to store all Post IDs
while ( have_posts() ) : the_post();
array_push($post_id_array, $post->ID); //store ID to array
/*
* Include the post format-specific template for the content. If you want to
* use this in a child theme, then include a file called called content-___.php
* (where ___ is the post format) and that will be used instead.
*/
get_template_part( 'content', get_post_format() );
endwhile;
// Previous/next post navigation.
twentyfourteen_paging_nav();
$catarray = array(); //Blank array to store all categories
$k=1;
foreach($post_id_array as $my_post){
$my_category = get_the_category( $my_post );
foreach($my_category as $my_cat){
array_push($catarray, $my_cat->cat_name); //Store category in array
}
$something = array_count_values($catarray); //Count total number of element in category array
foreach(array_unique($catarray) as $some){
if($k == sizeof($my_category) ): //Condition to print all thing if only it is last element of an array.
echo $some."(". $something[$some].")<br>";
endif;
}
$k++;
}
else :
// If no content, include the "No posts found" template.
get_template_part( 'content', 'none' );
endif;
?>
</div><!-- #content -->
</section><!-- #primary -->
<?php
get_sidebar( 'content' );
get_sidebar();
get_footer();
在上面的代码中,我已经完成了:
步骤1 :使用一个空白数组来存储搜索查询提供的帖子ID 。
步骤2 :使用PHP的array_push
功能推送所有 ID 以创建空白数组。 注意:请确保您已将其放入while loop
以获取所有ID
。
在两个步骤之后,现在您有一个所有帖子ID数组。
第3步:使用另一个空白数组来存储帖子的相关类别名称。
步骤4 :取一个变量并将其值提供给1
,这在最后很有用。(I采取了$k = 1
)。
步骤5 :制作一个帖子ID 的foreach
循环。 获取带有wordpress函数get_the_category
的帖子的类别名称。It will fetch category based on post ID
。
第6步:现在是时候使用我们为类别名称创建的空白数组了。仅{{1} }通过类别名称和商店类别的名称到数组。
步骤7 :使用PHP array_count_values
函数计算类别数组中的总名称并为其分配变量。(我使用过) loop
)。
在第7步之后,我们有一个类别名称数组。 注意:此数组中可能有类别名称的重复。要删除重复,请按照下一步操作。
步骤8 :使用PHP的'array_unique'函数从数组中仅获取唯一值。
第9步:设置类别名称的$something
。
如果您现在loop
,echo
。
现在是时候使用我们在帖子ID it will print categories to total number of post times
循环foreach
之前采取的变量了。
最后一步:现在让一个条件在最后一个帖子上打印所有类别。
因此,我使用了$k=1
,这意味着,它只会在类别数组的长度等于变量if($k == sizeof($my_category) )
时打印(简而言之,最后)。
增加 e K
。
希望它对你有所帮助。问我如果你有任何疑问。