我应该在什么时候调用Add_Setting_Section和Add_Setting_field?

时间:2016-04-05 作者:alnorth29

我看过的所有例子add_settings_section &;add_settings_field 让他们在admin_init 行动这意味着在加载每个管理页面时会调用它们。

然而,我的理解是,它们仅在呈现显示它们的选项页面时使用。有什么理由不把所有的电话都转到add_settings_section &;add_settings_field 在给定给的回调函数中add_menu_page?

我很好奇,因为我有一个插件,其中要显示的字段的选择是由对外部API的调用决定的。我当然不想在每次加载管理页面时都这样做。即使我将API调用的结果缓存在一个每隔一段时间就会过期的瞬态中。

1 个回复
最合适的回答,由SO网友:kovshenin 整理而成

你可以打电话add_settings_sectionadd_settings_field 在你之前的任何时候do_settings_sections:

add_action( \'my_plugin_add_settings_sections\', function() {
    wp_remote_get( ... );
    add_settings_section( ... );
    add_settings_field( ... );
});

// On the plugin settings page output
do_action( \'my_plugin_add_settings_sections\' );
do_settings_sections( ... );
你还是会想register_setting() 但前面提到过,因为在保存设置时不会触发该自定义挂钩,所以您可能希望确保清理回调已到位admin_init.

相关推荐

自定义发布类型的POST_ROW_ACTIONS

我正在使用this 在WordPress Admin中具有重复post函数的代码。但是,当我为自定义帖子类型添加过滤器时,如下所示:add_filter( \'directory_row_actions\', \'rd_duplicate_post_link\', 10, 2 ); (自定义帖子类型的注册名称为directory) - 它不会将其添加到条目标题下的操作行中。当我为帖子或页面执行此操作时,如下所示:add_filter( \'post_row_actions\', \'rd_dup