最近发现wordpress官方的wp_user_query里所给出的'orderby' => 'post_count'这个排序根本不生效。
使用下面代码始终没法基于文章数量排序:
1 |
$authors = <span class='wp_keywordlink_affiliate'><a href="https://www.mobantu.com/tag/get_users" title="View all posts in get_users" target="_blank" rel="noopener">get_users</a></span>( array( 'role' => 'author' , 'number' => $perpage, 'offset' => $offset, 'paged' => $paged, 'orderby' => 'post_count', 'order' => 'DESC' ) ); |
要按照作者的文章数量进行排序,需要进行自定义解决方案。下面是一个修改版的代码示例,可以根据作者的文章数量进行排序:
1 |
<span class="hljs-variable">$authors</span> = <span class="hljs-title function_ invoke__"><span class='wp_keywordlink_affiliate'><a href="https://www.mobantu.com/tag/get_users" title="View all posts in get_users" target="_blank" rel="noopener">get_users</a></span></span>(<span class="hljs-keyword">array</span>( <span class="hljs-string">'role'</span> => <span class="hljs-string">'author'</span>, <span class="hljs-string">'orderby'</span> => <span class="hljs-string">'post_count'</span>, <span class="hljs-string">'order'</span> => <span class="hljs-string">'DESC'</span>, )); <span class="hljs-variable">$sorted_authors</span> = []; <span class="hljs-keyword">foreach</span> (<span class="hljs-variable">$authors</span> <span class="hljs-keyword">as</span> <span class="hljs-variable">$author</span>) { <span class="hljs-variable">$author</span>->post_count = <span class="hljs-title function_ invoke__">count_user_posts</span>(<span class="hljs-variable">$author</span>->ID); <span class="hljs-variable">$sorted_authors</span>[<span class="hljs-variable">$author</span>->ID] = <span class="hljs-variable">$author</span>; } <span class="hljs-title function_ invoke__">usort</span>(<span class="hljs-variable">$sorted_authors</span>, function(<span class="hljs-variable">$a</span>, <span class="hljs-variable">$b</span>) { <span class="hljs-keyword">return</span> <span class="hljs-variable">$b</span>->post_count - <span class="hljs-variable">$a</span>->post_count; }); <span class="hljs-keyword">foreach</span> (<span class="hljs-variable">$sorted_authors</span> <span class="hljs-keyword">as</span> <span class="hljs-variable">$author</span>) { <span class="hljs-keyword">echo</span> <span class="hljs-variable">$author</span>->display_name . <span class="hljs-string">' - '</span> . <span class="hljs-variable">$author</span>->post_count . <span class="hljs-string">' posts<br>'</span>; } |
在这个修改的示例中,我先使用get_users()
函数获取作者用户列表,然后遍历每个作者并使用count_user_posts()
函数获取其文章数量。
接着,我为每个作者创建了一个新的属性post_count
,并将其设置为对应的文章数量。然后,我使用usort()
函数根据post_count
属性对作者进行自定义排序。
最后,我按照排序后的结果遍历作者列表,并输出作者名字和对应的文章数量。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。