我在寻找一种方法来显示自定义页面模板上所有帖子的自定义字段列表,我在中找到了解决方案this thread,.
由于所有自定义字段值都是字符串,因此我需要列表display in an alphabetical order. 有可能吗?给定的是我当前使用的代码,它为我提供了一个很好的无序列表,可以完成工作。如果可能,请建议更改代码。
<?php
function get_meta_values( $key = \'\', $type = \'post\', $status = \'publish\' ) {
global $wpdb;
if( empty( $key ) )
return;
$r = $wpdb->get_col( $wpdb->prepare( "
SELECT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = \'%s\'
AND p.post_status = \'%s\'
AND p.post_type = \'%s\'
", $key, $status, $type ) );
return $r;
}
?>
<?php $my_list_items = get_meta_values( \'full_name\' ); ?>
<h3>Display a list of custom values :</h3>
<ul>
<?php foreach($my_list_items as $my_list_item) {
echo \'<li>\' .$my_list_item. \'</li>\';
} ?>
</ul>
最合适的回答,由SO网友:Mayeenul Islam 整理而成
如果您使用ORDER BY pm.meta_value ASC
在WP db类中:
$r = $wpdb->get_col( $wpdb->prepare( "
SELECT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = \'%s\'
AND p.post_status = \'%s\'
AND p.post_type = \'%s\'
ORDER BY pm.meta_value ASC
", $key, $status, $type ) );
这将为您提供一个升序数组。