自定义字段:它们以什么顺序保存到数据库中?

时间:2013-04-19 作者:honk31

如果我在文章中插入多个自定义字段,它们将按“我不知道是什么”的方式排序。所以当我在一篇文章中插入多个字段并通过

$cf = get_post_custom();
foreach ($cf[\'ISSUU-configID\'] as $key => $value) {
  echo "<h4>" . $cf[\'ISSUU-configID\'][$key] . "</h4>\\n";
}
它们的顺序混淆了,既没有逻辑上的顺序,也没有我插入它们的方式。我觉得很奇怪。

为了让它更清楚一点:
我将这些数字插入到自己的自定义字段中(具体按顺序):
12345234563456745678

输出将是这样的(事实上,这总是不同的):
45678234561234534567

3 个回复
SO网友:fuxia

触发的SQL查询get_post_custom() 在中update_meta_cache() 看起来是这样的:

$wpdb->get_results( 
    $wpdb->prepare(
        "SELECT $column, meta_key, meta_value FROM $table WHERE $column IN ($id_list)",
        $meta_type
    ), 
    ARRAY_A 
);
所以没有ORDER BY 鉴于

没有ORDER BY 结果的顺序几乎是不可预测的:它取决于优化器、使用的索引和它们的顺序。

字段保存的顺序在这里并不重要。

您可以筛选\'query\' 并添加ORDER BY 子句添加到查询。看见wp-includes/wp-db.phpwpdb::query() 有关详细信息。

SO网友:Manny Fleurmond

您可以通过单独调用自定义字段get_post_meta 功能:

$meta = get_post_meta( $post_id, $key, $single ) //last argument is Boolean to return a single object or an array
更多信息here. 这样,您可以随时调用自定义字段。

SO网友:honk31

感谢皮勒先生朝着正确的方向努力。我创建了一个新的自定义字段,其中包含多个以“|”分隔的值,并使用php explode获取我的值:

$cf = get_post_custom();
if ($cf[\'ISSUU-multiID\'][0]) {
  $ids = explode("|", $cf[\'ISSUU-multiID\'][0]);
  foreach ($ids as $key => $id) {
    echo "<h4>" . $id . "</h4>\\n";
  }
}
。。。因为我不会编辑任何wp核心文件。。。谢谢你的帮助。。。

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在