WordPress:按自定义字段对get_pages进行排序

时间:2018-08-11 11:34:28

标签: php wordpress

我在Wordpress网站上有一个带有数字值的自定义字段“权重”。我想使用此值对页面进行排序。 但是我有一个问题。这是一个非常古老的网站,使用get_pages()显示页面。我可以将其更改为get_posts,但是如果这样做,我将不得不重写大量代码... 因此,也许存在更简单的解决方案?如何在不将get_pages更改为get_posts的情况下使用自定义字段值对页面进行排序?

3 个答案:

答案 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中没有orderget_pages的选项。

查看get_pages()get_posts()的文档

对于get_pages,查询将是这样

$args = array(
    'post_type' => 'page',
    'post_status' => 'publish',
    'meta_key' => 'weight',
);
$listingPages = get_pages( $args );

但是我个人认为您应该使用get_posts,因为它有许多用于过滤的参数。哪个适合条件。