Приоритетная проблема Wordpress Add_filter в 2 разных пользовательских плагинах (метабоксах)

Недавно я разработал 2 отдельных плагина WordPress для одного из моих проектов.

  1. Партнеры
  2. Библиотека ресурсов

Оба плагина создают пользовательские типы сообщений fsb_partners и fsb_resource_library. И в обоих плагинах я создал разные метабоксы (метабокс плагина партнеров содержит одно поле файла, т.е. плагин логотипа и библиотеки ресурсов создает метабокс с двумя полями файла, т.е. аудио и PDF).

Я использовал следующий код для создания метабокса в каждом плагине:

add_filter( 'cmb_meta_boxes', array($this, "fsb_partners_metaboxes"), 999); ---> Плагин для партнеров

add_filter( 'cmb_meta_boxes', array($this, "fsb_resource_library_metaboxes"), 999); ---> Плагин библиотеки ресурсов

Теперь виден только метабокс в плагине библиотеки ресурсов, а остальные нет. Если я изменю приоритет метабокса партнерского плагина на 9999, он появится, но в то же время плагины библиотеки ресурсов отключатся.

Я знаю, что это проблема приоритета хука add_filter wordpress, но я не могу до него добраться. Любая помощь?


person Ali    schedule 11.11.2015    source источник


Ответы (1)


Исправил сам. Просто создал отдельную (общую) функцию в моей теме functions.php следующим образом:

add_filter('cmb_meta_boxes', function( array $metaboxes = array() ) {

    global $fsb_resource_library, $fsb_partner;

    if( class_exists('fsb_resource_library') && is_object($fsb_resource_library) ) {
        $metaboxes += $fsb_resource_library->fsb_resource_library_metaboxes();  
    }

    if( class_exists('fsb_partners') && is_object($fsb_partner) ) {
        $metaboxes += $fsb_partner->fsb_partners_metaboxes();   
    }

    return $metaboxes;

});
person Ali    schedule 12.11.2015