如何创建一个带有硬编码值下拉(“Hard”,“Soft”和“None”)的元数据的函数,并根据给定的字符串数组动态创建元数据?
原始功能:
function your_prefix_product_fields( $meta_boxes )
{
$meta_boxes[] = array(
'title' => __( 'Product Fields', 'your-prefix' ),
'post_types' => array(
'product',
),
'fields' => array(
array(
'name' => __( 'Package', 'test' ),
'id' => 'package',
'type' => 'select',
'clone' => false,
'options' => array(
'Soft' => __( 'Soft', 'test' ),
'Hard' => __( 'Hard', 'test' ),
'None' => __( 'None', 'test' ),
),
'multiple' => true,
'std' => 'none',
'placeholder' => __( 'Select Package', 'test' ),
),
)
);
return $meta_boxes;
}
我有阵列:["Hard", "Soft", "None"]
编辑: 我更多地考虑了我的问题,也许我可以说得更清楚:
我想要做的是从查询输出中动态创建此数组:
'options' => array(
'Soft' => __( 'Soft', 'test' ),
'Hard' => __( 'Hard', 'test' ),
'None' => __( 'None', 'test' ),
),
其他问题:
1)如果我可以手动创建'options array',我可以编写类似的内容:
'options' => $packages,
鉴于我能够创建数组包,使其看起来像:
array(
'Soft' => __( 'Soft', 'test' ),
'Hard' => __( 'Hard', 'test' ),
'None' => __( 'None', 'test' ),
),
2)如何创建这种类型的数组?它是哈希映射吗?
我尝试过类似的事情:
$packages['Soft'] = ('Soft', 'test');
没有运气......它的语法是什么?
答案 0 :(得分:0)
如果我正确理解你的问题,听起来你已经有了一个元框并且正在工作,但是你试图为它提供一个可变的下拉选项列表。
这里的混淆似乎是'options'
数组的语法。重要的是要认识到__($param1, $param2)
只是wordpress定义的翻译函数,用于本地化。它将返回一个sting,它是基于域(第二个参数)的第一个参数(字符串)的转换。更多信息:https://codex.wordpress.org/Function_Reference/_2。
那就是说,你是在正确的轨道上,但你希望$packages
是这样的:
$packages = array(
'Soft' => $val1,
'Hard' => $val2,
'None' => $val3
)
三个变量是你想要的任何字符串。然后你应该能够将$packages
作为另一个参数传递给函数,并将其设置为options
的值,就像你想的那样。此外,如果您需要翻译并希望使用双下划线方法,则应该能够在创建阵列时调用该函数。或者您可以在设置为your_prefix_product_fields
之前在'options'
内循环遍历数组:
foreach ($packages as $key => $opt)
$packages[$key] = __($opt, 'test');