Wordpress获取自定义字段值

时间:2017-10-10 07:02:18

标签: wordpress

所以我想在WP中获取自定义帖子值。问题是我可以有多个自定义字段值。所以我不想在代码中硬编码。我想要做的是在键值中提供类似

的前缀
abc_email
abc_website

所以我想使用这个功能

get_post_meta

或其他一些来获取以abc开头的所有键值对。这样我就可以在后端添加值,而不必更新我的代码。一种方法是使用上述函数获取所有元数据,然后循环并过滤。但是,还有其他方法我可以发送我正在寻找的模式吗?

由于

2 个答案:

答案 0 :(得分:1)

您可以直接在数据库中查询包含前缀的帖子条目(相关表格等https://wordpress.stackexchange.com/questions/104434/where-are-custom-field-values-stored-in-the-database

  • 但这更复杂,仍然涉及循环,并没有为您提供使用WP和PHP可以做的任何事情。如果你想要满足未知数,你必须循环或插入索引等。

我可能会在你的问题中遗漏一些内容,但这似乎很简单:

您正试图避免这种情况:

process_field($abc_known1);
process_field($abc_known2);

// continually edit code for new entries e.g.:
process_field($abc_NEW1);

这样的事情会在不加修改的情况下处理以后的添加。

//  get array of ALL cust fields for post
$all_cust_fields = get_post_meta( get_queried_object_id());
foreach ($all_cust_fields as $key => $value) {
  // some function for determing if $value starts with "abc_"  
  // if so either:
  //     add to an "abc" array for later use/processing
  // or take action in this loop e.g.

   process_field($value);
}

我不确定您是在谈论以“abc_”为前缀的键或值,但同样的原则适用。

答案 1 :(得分:0)

你应该写这样的代码,

$email_meta = get_post_meta( 'your_post_id', 'abc_email', true );
$website_meta = get_post_meta( 'your_post_id', 'abc_website', true );

或者

您可以关注这些链接,

example

example

希望这会对你有所帮助。