我在Wordpress网站上有一个带有数字值的自定义字段“权重”。我想使用此值对页面进行排序。 但是我有一个问题。这是一个非常古老的网站,使用get_pages()显示页面。我可以将其更改为get_posts,但是如果这样做,我将不得不重写大量代码... 因此,也许存在更简单的解决方案?如何在不将get_pages更改为get_posts的情况下使用自定义字段值对页面进行排序?
答案 0 :(得分:1)
您可以使用wordpress提供的标准参数选项对页面进行排序。
<?php ` get_pages( $args ); ` ?>
<?php ` $args = array(
`sort_order` => `asc`,
'sort_column' => 'post_title',
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'meta_key' => '',
'meta_value' => '',
'authors' => '',
'child_of' => 0,
'parent' => -1,
'exclude_tree' => '',
'number' => '',
'offset' => 0,
'post_type' => 'page',
'post_status' => 'publish'
);
$pages = get_pages($args); `
?>
meta_key
(字符串)仅包含具有此元键的页面。
meta_value
(字符串)仅包含具有此元值的页面。需要$ meta_key。
sort_column
(字符串)页面排序所依据的列,以逗号分隔。接受'post_author','post_date','post_title','post_name','post_modified','menu_order','post_modified_gmt','post_parent','ID','rand','comment count'。对于以它开头的任何值,可以省略“ post ”。默认为“ post_title”。
答案 1 :(得分:0)
您可以使用自定义字段值对页面进行排序..但您必须更改get_pages to get_posts
我认为wordpress没有提供使用get_pages
函数根据自定义字段对页面进行排序的方法。
$listingPages = get_posts(
array(
'meta_key' => 'streetAdd',
'post_type' => 'page',
'post_status' => 'publish',
'orderby' => 'meta_value',
'order' => 'ASC',
)
);
答案 2 :(得分:0)
不幸的是,如果您不想使用get_posts
,则orderby
中没有order
和get_pages
的选项。
查看get_pages()和get_posts()的文档
对于get_pages,查询将是这样
$args = array(
'post_type' => 'page',
'post_status' => 'publish',
'meta_key' => 'weight',
);
$listingPages = get_pages( $args );
但是我个人认为您应该使用get_posts
,因为它有许多用于过滤的参数。哪个适合条件。