我想在阵列中使用Wordpress帖子标题。
我的自定义帖子类型中的帖子标题是姓氏的人名。我想根据他们的姓氏按字母顺序显示我的帖子并将其存储在一个数组中。我如何在循环中执行此操作?
答案 0 :(得分:1)
您可以使用WP_Query
检索自定义帖子类型的帖子,然后浏览每个帖子以获取标题。
// just get IDs rather than whole post object - more efficient
// as you only require the title
$post_ids = new WP_Query(array(
'post_type' => 'custom_post_type_name', // replace with CPT name
'fields' => 'ids',
'orderby' => 'meta_value',
'meta_key' => 'surname_field_name' // replace with custom field name
));
$post_titles = array();
// go through each of the retrieved ids and get the title
if ($post_ids->have_posts()):
foreach( $post_ids->posts as $id ):
// get the post title, and apply any filters which plugins may have added
// (get_the_title returns unfiltered value)
$post_titles[] = apply_filters('the_title', get_the_title($id));
endforeach;
endif;
使用WP_Query
的优势在于它不会改变您网页上的主循环,您可以使用orderby
以及自定义的名称按照您的要求获取帖子包含姓氏的字段。
答案 1 :(得分:-1)
您可以在循环外创建一个数组,然后使用名称填充数组,而不是对数组进行排序。
<?php
// the array for the names
$name_array = array();
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
$name_array[] = $post->title;
//
// Post Content here
//
} // end while
if ( sizeof( $name_array ) > 0 ) {
sort( $name_array );
} // end if for sizeof()
} // end if
?>
如果你不能在The Loop之外创建数组,那么你可以在 if(have_posts()){。
下移动它。重要说明:此解决方案仅包含当前循环中的名称,因此,如果您的查询未包含所有帖子,或者是偏移/分页等,则数组将无法获取您在自定义中的所有名称发布类型。如果你想拥有数组中的所有名称并且你的循环查询没有包含所有帖子,那么你必须再次查询 - 只是为了标题(名称)。