如何在插件的单个选项页面上运行get\\u posts查询,并将这些结果发送到另一个函数以填充选择字段?
我正在构建一个自定义插件,该插件从各种帖子类型的自定义字段构建vcard。
在由CMB2生成并加载到CMB2\\u admin\\u init的“我的选项”页面上,我有各种选择字段,这些字段显示我通过对所有帖子类型运行查询找到的meta\\u关键字。随着每种帖子类型中条目的增长,我自然会看到大量的查询。因此,我只想在特定的管理选项页面上运行该查询。这是我唯一需要这个查询的时候。
我一直在尝试使用“load-{options page.php}”操作挂钩,它工作得很好,但我不知道如何运行该查询,然后在cmb2\\u admin\\u init上启动的函数中获得结果。它们都在一个类中,所以我可以传递一个变量?但ti似乎总是重新运行查询,因为变量是在cmb2\\u admin\\u init上启动的函数内分配的。
我可以在“load-[name of optins page.php}”上运行此方法
/**
* Convert to array for CMB2 field type
* @since 0.1.0
*/
public function get_meta_keys_array() {
$options = array();
// Get keys from a WP_Query
$fields = $this->get_meta_keys();
if( $fields ) {
// Builds simple array to populate my select fields
foreach( $fields as $field => $key ) {
$options[$key] = $key;
}
}
return apply_filters( \'vcard_get_meta_keys_array_output\', $options );
}
然后此函数用于“cmb2\\u admin\\u init”上的字段显示
/**
* Registers options page menu item and form.
*
* @since 1.9.0
*/
public function register_options_metabox() {
// This is where I am running into trouble.
$meta_keys = $this->get_meta_keys_array();
$cmb_options = new_cmb2_box( array(
\'id\' => \'vcard_generator_metabox\',
\'title\' => esc_html__( \'vCard Generator Settings\', $this->plugin_name ),
\'object_types\' => array( \'options-page\' )
$cmb_options->add_field( array(
\'name\' => esc_html__($person[\'name\'], $this->plugin_name),
\'id\' => \'vcard_generator_metabox\' . $person[\'id\'],
\'type\' => \'select\',
\'show_option_none\' => true,
\'default\' => \'custom\',
\'options\' => $meta_keys // This is where the meta_keys are populated
) );
}
请注意,这些函数被截断,不能用于复制/粘贴