ACF Global Options and Metaboxes for WP Multisite

…или как сделать так, чтобы набор метаполей и/или ACF Option Page был единым для всех блогов в рамках установки WordPress Multisite.

У меня проблема возникла, когда на мультисайте существующие глобальные настройки (Options Page) должны были стать действительно глобальными. Я пошел дальше и сделал все настройки метабоксов, включая Options Page, едиными для всех блогов.

Другими словами, при изменении набора настроек ACF главного сайта, следует избежать необходимости вручную вносить одни и те же правки во всех блогах.

Также, при переносе файлов сайта с девелоперского домена на предпрод, БД, как правило, подтягивается с прода. А значит, набор метаполей ACF может различаться.

Подход к решению таков:

  1. в главном блоге установки в ACF-панели настраиваем необходимые метаполя и ACF Option Page
  2. во всех прочих блогах ничего не создаем или удаляем, если они уже есть
  3. при сохранении настроек ACF главного блога создаем php-файл импорта настроек для блогов
  4. загружаем созданный файл, если текущий блог не главный.

Код для п.3. Можно прямо в functions.php

<?php
add_action( 'shutdown', 'sh_acf_generate' );

function sh_acf_generate(){
  global $wpdb;
  
  if ( ! did_action( 'save_post_acf-field-group' ) ) return;
  
  $fields = $wpdb->get_col( "SELECT post_name FROM {$wpdb->posts} WHERE post_type = 'acf-field-group' AND post_status = 'publish'" );
  
  if ( empty( $fields ) ) return; 
  
  $str_replace = array(
    "  "      => "\t",
    "'!!__(!!\'"  => "__('",
    "!!\', !!\'"  => "', '",
    "!!\')!!'"    => "')",
    "array ("    => "array("
  );
  $preg_replace = array(
    '/([\t\r\n]+?)array/'  => 'array',
    '/[0-9]+ => array/'    => 'array'
  );
  
  $out = "<?php if( function_exists('acf_add_local_field_group') ):" . "\r\n" . "\r\n";
  
  foreach( $fields as $f ) :
  
    $field_group = acf_get_field_group( $f );
    // load fields
    $field_group['fields'] = acf_get_fields( $field_group );
    // prepare for export
    $field_group = acf_prepare_field_group_for_export( $field_group );
  
    $code = var_export( $field_group, true );
    // change double spaces to tabs
    $code = str_replace( array_keys($str_replace), array_values($str_replace), $code );
    // correctly formats "=> array("
    $code = preg_replace( array_keys($preg_replace), array_values($preg_replace), $code );
    // esc_textarea
    $code = esc_textarea( $code );
    $out .= "acf_add_local_field_group({$code});" . "\r\n" . "\r\n";
  endforeach;
  
  $out .= "endif;";
  
  file_put_contents( get_template_directory() . '/inc/acf.php', htmlspecialchars_decode( $out, ENT_QUOTES  ) );
}

Данный код является вырезкой из метода html_generate() класса ACF_Admin_Tool_Export. Никаких хуков найдено не было, поэтому пришлось копировать код.

На данном этапе мы отлавливаем момент сохранения настроек и, после некоторой обработки, сохраняем php-код импорта этих настроек.

Почему используем хук shutdown, чтобы ACF успел создать/удалить новые acf-field-group-записи при их создании/удалении.

Теперь остаётся только подключить сгенерированный файл в function.php, предварительно убедившись, что делаем это для всех блогов, кроме главного.

<?php

if ( 1 != get_current_blog_id() ):
  include get_template_directory() . '/inc/acf.php';
endif;

 

Для использования при миграции файлов с девелоперского домена, добавляем проверку текущего домена с помощью функции get_home_url().

0 0 голоса
Article Rating
Share this post



28 Comments
Сначала старые
Сначала новые По рейтингу
Межтекстовые Отзывы
Посмотреть все комментарии
Extended Opportunity
Extended Opportunity
11 месяцев назад

MobiApp AI – True Android & iOS Mobile Apps Builder (Zero Coding Required) https://ext-opp.com/MobiAppAI

Extended Opportunity
Extended Opportunity
11 месяцев назад

Word’s First NLP & ML Based Email, Voice & Video Marketing Autoresponder Thats Boost Email Delivery, Click & Open Rates Instantly https://ext-opp.com/VidMailsAI

Extended Opportunity
Extended Opportunity
11 месяцев назад

Hey, did you know there are app that mass generate hundreds of redirects to your link from different domains? Get it here – https://ext-opp.com/BUS

Extended Opportunity
Extended Opportunity
11 месяцев назад

Are you still using Calendly to schedule your calls and meetings? If your answer is yes, then you are actually hurting your business not helping it… Calendly is limited, doesn’t unlock the full potential of your business… And to make matters worse, they charge you monthly… What a joke… But you don’t have to worry, because my good friend Kundan is about to change the entire market … You see, he just launched his newest creation AI Calenderfly… The world’s first appointment-setting app that is fully powered by AI… It will do all of the heavy lifting for you on… Раскрыть »

Brayan Phelps
Brayan Phelps
7 месяцев назад

For the reason that the admin of this site is working, no uncertainty very quickly it will be renowned, due to its quality contents about extra virgin olive oil EVOO.

Caiden Clark
Caiden Clark
7 месяцев назад

very informative smoke point of olive oil articles or reviews at this time.

Aria Cherry
Aria Cherry
6 месяцев назад

For the reason that the admin of this site is working, no uncertainty very quickly it will be renowned, due to its quality contents about Hollywood Smile.

Jameson Malachi Villanueva
Jameson Malachi Villanueva
6 месяцев назад

For the reason that the admin of this site is working, no uncertainty very quickly it will be renowned, due to its quality contents about Liberica Coffee.

Noktasal su kaçağı tespiti
Noktasal su kaçağı tespiti
5 месяцев назад

Noktasal su kaçağı tespiti Teknolojik cihazlarla su kaçağı tespit ettiler, sonuç çok iyiydi. https://intgez.com/read-blog/79255

mp4 download free video player online
mp4 download free video player online
5 месяцев назад

Your blog is a testament to your dedication to your craft. Your commitment to excellence is evident in every aspect of your writing. Thank you for being such a positive influence in the online community.

Ümraniye süpürge boru temizliği
Ümraniye süpürge boru temizliği
5 месяцев назад

Ümraniye süpürge boru temizliği Makul fiyatlarla süpürgemin performansını artırdılar. https://kiwiboom.com/read-blog/930

pinterest video downloader remove watermark
pinterest video downloader remove watermark
5 месяцев назад

Hey there You have done a fantastic job I will certainly digg it and personally recommend to my friends Im confident theyll be benefited from this site

Haraççı su kaçak tespiti
Haraççı su kaçak tespiti
4 месяцев назад

Haraççı su kaçak tespiti Sarıyer’deki villa için profesyonel su kaçağı tespiti hizmeti aldık, kesinlikle öneririm. https://www.soft-clouds.com/ustaelektrikci

hızlı su kaçak tespiti
hızlı su kaçak tespiti
4 месяцев назад

hızlı su kaçak tespiti Deneyimli Kadro: Ekip oldukça deneyimliydi. Tesisat sistemimizdeki kaçak noktasını kısa sürede bulup çözdüler. https://weoneit.com/1729335040875317_1804

Barbaros su kaçak tespiti
Barbaros su kaçak tespiti
4 месяцев назад

Barbaros su kaçak tespiti Banyodaki su kaçağını bulmak için kırmadan dökmeden çalıştılar. Çok titiz ve düzenli bir ekipti. Gülşen Z. https://www.dununu.com/ustaelektrikci

Cassius Roberto Jaxon Bolton
Cassius Roberto Jaxon Bolton
3 месяцев назад

For the reason that the admin of this site is working, no uncertainty very quickly it will be renowned, due to its quality contents about Turkey teeth.

unfettering
unfettering
1 месяц назад

OHrqKm8v6Be

同性愛者のポルノ
同性愛者のポルノ
1 месяц назад

FJqVxRmbTOU

Üsküdar Boşanma Avukatı
Üsküdar Boşanma Avukatı
30 дней назад

Hocam Ellerinize Sağlık, boşanma avukatı hakkında Detaylı ve Güzel Makale Olmuş.

Keyifli Patim Köpek Oteli
Keyifli Patim Köpek Oteli
29 дней назад

Hocam Ellerinize Sağlık, köpek oteli hakkında Detaylı ve Güzel Makale Olmuş.

Keyifli Patim Köpek Oteli
Keyifli Patim Köpek Oteli
28 дней назад

Hocam Ellerinize Sağlık, köpek oteli hakkında Detaylı ve Güzel Makale Olmuş.

Neşeli Pet Otel | Köpek Oteli | Köpek Pansiyonu
Neşeli Pet Otel | Köpek Oteli | Köpek Pansiyonu
27 дней назад

Hocam Ellerinize Sağlık, köpek oteli ve pet otel hakkında Detaylı ve Güzel Makale Olmuş.

Poppin' Bubble Tea & Coffee
Poppin' Bubble Tea & Coffee
23 дней назад

Hocam Ellerinize Sağlık bubble tea Hakkında Detaylı ve Güzel Makale Olmuş.

Caramel Macchiato
Caramel Macchiato
21 дней назад

For the reason that the admin of this site is working, no uncertainty very quickly it will be renowned, due to its quality contents about Caramel Macchiato.

Orhantepe su kaçak tespiti
Orhantepe su kaçak tespiti
10 дней назад

Orhantepe su kaçak tespiti Teknolojik cihazlar, insan hatasını minimize eder. https://www.alabamalighthouses.com/?p=23136

Çanta su kaçak tespiti
Çanta su kaçak tespiti
9 дней назад

Çanta su kaçak tespiti Küçükçekmece’deki evimizdeki su kaçağını cihazlarla hemen tespit ettiler. Teşekkür ederim. https://fairknowledge.wiki/?p=47010

Çekmeköy su kaçağı tespiti
Çekmeköy su kaçağı tespiti
8 дней назад

Çekmeköy su kaçağı tespiti Yüksek teknolojili ekipmanları sayesinde kısa sürede tespit yapabildiler. https://www.studiodentisticofraietta.it/author/kacak/

Dudullu su kaçak tespiti
Dudullu su kaçak tespiti
6 дней назад

Dudullu su kaçak tespiti Maslak su kaçağı tespiti: Maslak’ta su sızıntıları için uzman çözüm. https://anngez.com/uskudar-tesisatci-kacak-tespiti/

28
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x