2017-10-10 117 views
0

所以我想在WP中获得自定义的发布值。事情是我可以有多个自定义字段的值。所以我不想在代码中进行硬编码。我在想什么做的是提供一个前缀的键值像WordPress的获取自定义字段值

abc_email 
abc_website 

,所以我想用这个功能

get_post_meta 

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

感谢

+1

你看过文档吗? https://developer.wordpress.org/reference/functions/get_post_meta/#comment-2124 –

回答

1

你可以直接查询该数据库包含前缀(相关表格等在这里https://wordpress.stackexchange.com/questions/104434/where-are-custom-field-values-stored-in-the-database

  • 但是这是比较复杂的,还涉及到一个循环,不为你提供任何你能一个条目公布使用WP和PHP。如果你想,以满足未知,你将有循环或interogate指数等

我可能会丢失你的问题的东西,但,这似乎直截了当:

您正在试图避免这种情况:

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_”,但同样的原则适用。

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

希望这会对你有所帮助。