按我在每个循环中的需要排序,比如按标题或其他什么?

时间:2020-05-25 作者:Cycle99

在cpt中,我可以选中metabox中的一些值(复选框)。我可以通过以下方式访问此值

$meta = get_post_meta(get_the_ID(), \'_custom-meta-box\', true ); 
之后,我执行foreach循环:

foreach ($meta as $key11 => $value11) { 
if($meta[$key11] > 1) {
    $my_postid11 = $value11;
    $funktion11 =  get_post_meta($my_postid11, \'funktion\', true );
    echo \'<a href="\'.get_the_permalink($my_postid11).\'">\'.get_the_title($my_postid11).\' <div class="arrow"></div></a>\';
}   }
到目前为止效果很好。但是:我不知道如何按照我的需要来订购它们,就像通常的wp\\U查询一样

$args=array(\'order\'=>\'asc\',\'orderby\'=>\'wpse_last_word\' );
我所需要的只是在foreach循环中按“wpse\\u last\\u word”或按标题排序结果。。

有什么想法吗?

2 个回复
SO网友:Yash Tiwari

Try below code to filter the data by title in Ascending Order:

$meta = get_post_meta(get_the_ID(), \'_custom-meta-box\', true ); 

$title_array = array();

foreach ($meta as $key11 => $value11) { 
    if($meta[$key11] > 1) {
        $my_postid11 = $value11;
        $title = get_the_title($my_postid11);
        $id = $my_postid11;
        $title_array[$id] = $title;
    }   
}
asort($title_array);
foreach ($title_array as $key22 => $value22) {
    $my_postid22 = $key22;
    $funktion11 =  get_post_meta($my_postid22, \'funktion\', true );
    echo \'<a href="\'.get_the_permalink($my_postid22).\'">\'.$value22.\' <div class="arrow"></div></a>\';
}
SO网友:Bysander

如果您试图根据在循环本身中发现的内容对数组(在foreach循环中迭代的内容)进行排序,那么如果不首先获得该信息,就不可能进行排序。

实现这一点的一种方法是预先使用foreach循环来获取此信息。

$array = [ 1, 8, 12, 16 ];
foreach ($array as $key => $entry) {
    unset($array[$key]);
    $array[$key][\'value\'] = $entry;
    $array[$key][\'title\'] = uniqid(); // This could be your title (
}
退货

Array
(
    [0] => Array
        (
            [value] => 1
            [title] => 5ecfb2ee803fa
        )

    [1] => Array
        (
            [value] => 8
            [title] => 5ecfb2ee803fd
        )

    [2] => Array
        (
            [value] => 12
            [title] => 5ecfb2ee803fe
        )

    [3] => Array
        (
            [value] => 16
            [title] => 5ecfb2ee803ff
        )

)
因此,您可以使用PHP Sort Functions For Arrays 订购依据\'title\'

我在评论中指出的地方是,完全可以用wp_query

如果你已经在查找帖子、帖子数据和元数据,你可以一次完成。

如果您的$meta = get_post_meta(get_the_ID(), \'_custom-meta-box\', true ); 正在获取帖子ID数组。

$meta = get_post_meta(get_the_ID(), \'_custom-meta-box\', true ); 
$args = array(
    \'post_type\'  => \'my_custom_post_type\',
    \'orderby\'    => \'tite\',
    \'order\'      => \'ASC\',
    \'post__in\'   => $meta,
);
这就是你的疑问。然后,您可以像这样循环来检索您的标题、永久链接等。

相关推荐

do_action not working in loop

我一直在使用do\\u action在循环中生成多个动作挂钩。对我来说,do\\u操作不起作用似乎很不幸。function ltc_generate_input_fields($fields = array()) { echo \"Hello World\"; if (empty($fields) || !is_array($fields)) return; foreach($fields as $field) { &#