ACF - 选项页面挂钩(Wordpress)

问题描述 投票:0回答:2

我确实大量使用了 ACF 的选项页面和中继器字段。 为了减少查询量(从大约 500 到 80),我在 Wordpress Transient API 的帮助下缓存了一些字段输出。

我知道 ACF 选项页面的挂钩是:

add_action( 'acf/save_post', 'reference_function') ); 

但对我来说问题是,我有多个选项页面。而且我不希望在保存任何选项页面时运行所有功能......

这些是我当前的选项页面

add_filter('acf/options_page/settings', 'my_acf_options_page_settings');
if(function_exists("register_options_page")) {
        acf_add_options_page();
        register_options_page('Spielübersicht');
        register_options_page('Mannschaft');
        register_options_page('SCHWALBE arena TV');
        register_options_page('Sponsoren');
        register_options_page('Werbung');
        register_options_page('Einstellung');
        register_options_page('Fanclubs');
        register_options_page('Sidebar');
    }

有没有办法过滤操作,以便仅在保存相关选项页面时创建我的瞬态?

wordpress action hook advanced-custom-fields
2个回答
9
投票

幸运的是我能够解决我的问题! 在插件支持论坛中查看我的代码: http://support.advancedcustomfields.com/forums/topic/acfsave_post-for-specific-options-page/

function clear_advert_main_transient() {
    $screen = get_current_screen();
    if (strpos($screen->id, "acf-options-adverts") == true) {
        delete_transient('advert_main_transient1');
        delete_transient('advert_main_transient2');
        delete_transient('advert_main_transient3');
    }
}
add_action('acf/save_post', 'clear_advert_main_transient', 20);

0
投票

我知道这个问题有点老了,但似乎(终于)ACF Pro 有一个内置的操作来执行此操作。

从 6.1.7 版本开始,我们可以这样做:

add_action('acf/options_page/save', 'my_acf_save_options_page', 10, 2);
function my_acf_save_options_page($post_id, $menu_slug) {

    if ('theme-settings' !== $menu_slug) {
        return;     
    }
    // Get newly saved values for the theme settings page.
    $values = get_fields($post_id);

    // Check the new value of a specific field.
    $analytics_code = get_field('analytics_code', $post_id);
    if($analytics_code) {
        // Do something...
    }
}

官方文档:https://www.advancedcustomfields.com/resources/acf-options_page-save/

© www.soinside.com 2019 - 2024. All rights reserved.