按查询循环中的元字段排序

时间:2013-12-29 作者:jeremybarbet

我想根据添加在元字段中的数字对我的文章进行分类。

这是第一步,我要在页面上显示文章。

<?php
    $cat = get_post_meta( get_the_ID(), \'cat_page\', true );
?>
我开始循环。这是在这个循环中,我得到了我的自定义元字段。

<?php if ( $cat ) {
    // run the custom query
    $query = new WP_Query( \'category_name=\' . $cat );

    // run the custom loop
    while ( $query->have_posts() ) { $query->the_post(); $my_meta = get_post_meta( $post->ID, \'_my_meta\', true ); ?>

But how sort by a specific key of the meta (-> $my_meta[\'niveau-chiffre\'])

我试过这样的

<?php
    $my_meta = get_post_meta( $post->ID, \'_my_meta\', true );
    $cat = get_post_meta( get_the_ID(), \'cat_page\', true );

    $args = array(
        \'category_name\' => $cat,
        \'meta_key\' => \'_my_meta\',
        \'orderby\' => \'meta_value\',
        \'order\' => \'ASC\',
        \'meta_query\' => array(
            array(
               \'key\' => \'_my_meta\',
               \'value\' => \'niveau-chiffre\',
               \'meta_value\' => \'niveau-chiffre\',
               \'compare\' => \'>=\',
               \'type\' => \'NUMERIC\'
            )
        )
    );
?>
和回路

<?php if ( $cat ) {
    // run the custom query
    $query = new WP_Query( $args );

    // run the custom loop
    while ( $query->have_posts() ) { $query->the_post(); $my_meta = get_post_meta( $post->ID, \'_my_meta\', true ); ?>
但在这一点上,我认为元变量(\\u my\\u meta)没有。

EDIT

我的meta在数据库中看起来像这样

screen database

我尝试过这样的东西,多亏了Generate WP

<?php
    $cat = get_post_meta( get_the_ID(), \'cat_page\', true );

    $args = array(
        \'category_name\' => $cat,
        \'order\' => \'ASC\',
        \'meta_query\' => array(
            array(
               \'key\' => \'_my_meta\',
               \'value\' => \'niveau-chiffre\',
               \'type\' => \'NUMERIC\'
            )
        ),
        \'orderby\' => \'meta_value_num\'
    );
?>
但它也不起作用。

3 个回复
SO网友:JMB
<?php
$cat = get_post_meta( get_the_ID(), \'cat_page\', true );

$args = array(
    \'category_name\' => $cat,
    \'meta_key\' => \'niveau_chiffre\',
    \'orderby\' => \'meta_value_num\', //Since we\'re dealing with numbers
    \'order\' => \'ASC\',
    //\'meta_query\' => array(
       // array(
           //\'key\' => \'niveau-chiffre\',
           //\'value\' => \'niveau-chiffre\', Don\'t give a value because we\'re not looking for a specific one
           //\'compare\' => \'>=\', We\'re not comparing as such. Defaults to =
           //\'type\' => \'NUMERIC\'
        //)
    ), //You missed a comma here I think
);

Try this.

SO网友:Ravi Patel

orderby 应该是meta_value_num, 或meta_value, 不是密钥的名称。看见WP_Query orderby parameters.

SO网友:Rarst

元数据是数组,这意味着它以序列化形式存储在数据库中。您无法[干净且轻松地]查询序列化数据。重构以在字段中使用niveau-chiffre 钥匙

结束

相关推荐

Custom Blog Loop on Home Page

我想看看是否可以使用循环中的args在主页上显示所有顶级帖子类别中的“最新”帖子?看见http://blog.reneerouleau.com/dev/ 例如,我当前设置的内容。我正在运行shoestrap wp。<?php wp_reset_query(); $cats = get_categories(\'\'); foreach ($cats as $cat) : if($cat->category_parent) continue