Fejlesztőknek: a szerkesztő bővítése
Egyéni vezérlők hozzáadása a mezőkhöz és a mezőcsoportokhoz, a feldolgozott beállítások módosítása.
Ez a fejezet fejlesztőknek szól. Ha saját megoldást írsz a Meta Boxhoz, szükséged lehet arra, hogy a mezőkhöz saját beállítást adj. Az MB Builder ehhez kampókat (hookokat) kínál, amelyekkel saját vezérlőket helyezhetsz a szerkesztőbe.
Vezérlők hozzáadása a mezőkhöz
Szekció neve “Vezérlők hozzáadása a mezőkhöz”A mezők beállításaihoz az mbb_field_controls szűrővel adsz vezérlőt:
add_filter( 'mbb_field_controls', 'your_prefix_add_field_controls', 10, 2 );
function your_prefix_add_field_controls( $controls, $type ) { $controls[] = \MBB\Control::Checkbox( 'custom_layout', __( 'Custom layout', 'your-text-domain' ) );
$controls[] = \MBB\Control::Select( 'layout', [ 'label' => __( 'Layout', 'your-text-domain' ), 'tooltip' => __( 'Select the layout for the field', 'your-text-domain' ), 'options' => [ 'one-third' => __( 'One-third', 'your-text-domain' ), 'one-half' => __( 'One-half', 'your-text-domain' ), 'two-third' => __( 'Two-third', 'your-text-domain' ), 'full-width' => __( 'Full-width', 'your-text-domain' ), ], 'dependency' => 'custom_layout:true', ], 'one-half', 'general' );
return $controls;}A szűrő két paramétert kap:
$controls: a vezérlők tömbje.$type: a mező típusa. Akkor hasznos, ha a vezérlőt csak bizonyos mezőtípusokhoz akarod hozzáadni.
Minden vezérlőnek típusa van (a fenti példában \MBB\Control::Select, egy legördülő lista), és a következő paramétereket fogadja, ebben a sorrendben:
- A beállítás neve.
- A vezérlő tulajdonságai (tömb):
label: a vezérlő felirata.tooltip: a súgóbuborék szövege, ha el akarod magyarázni, mire való a vezérlő.options: a legördülő lista opciói'érték' => 'felirat'formában.dependency: ha a vezérlőt csak akkor akarod megmutatni, amikor egy másik vezérlő adott értéket vesz fel. Formátuma{másik_vezérlő_beállítása}:{érték}. Nem kötelező.
- Alapérték. Nem kötelező.
- A beállítások füle:
general(alapértelmezett) vagyadvanced. Nem kötelező.
Ha a vezérlőnek csak felirata van, a második paraméter lehet egyszerű szöveg is (mint a fenti példa jelölőnégyzeténél).
Támogatott vezérlőtípusok
Szekció neve “Támogatott vezérlőtípusok”| Név | Leírás |
|---|---|
MBB\Control::Checkbox |
Jelölőnégyzet. |
MBB\Control::Input |
Szövegbeviteli mező. A 'type' => 'number' tulajdonsággal csak számot fogad. |
MBB\Control::Select |
Legördülő lista, egy érték választható. Az options tulajdonságot be kell állítani. |
MBB\Control::ReactSelect |
Legördülő lista, több érték is választható. Az options tulajdonság kell hozzá, az alapértéknek tömbnek kell lennie. |
MBB\Control::Textarea |
Többsoros szövegmező. |
Vezérlők hozzáadása a mezőcsoportokhoz
Szekció neve “Vezérlők hozzáadása a mezőcsoportokhoz”A mezőcsoport beállításaihoz hasonlóan adhatsz vezérlőt az mbb_settings_controls szűrővel. A példa az MB Tabs kiegészítő beállításait mutatja:
add_filter( 'mbb_settings_controls', 'your_prefix_add_settings_controls' );
function your_prefix_add_settings_controls( $controls ) { $controls[] = \MBB\Control::Select( 'tab_style', [ 'label' => __( 'Tab style', 'meta-box-builder' ), 'tooltip' => __( 'Change how look and feel of tabs in MB Tabs', 'meta-box-builder' ), 'options' => [ 'default' => __( 'Default', 'meta-box-builder' ), 'box' => __( 'Box', 'meta-box-builder' ), 'left' => __( 'Left', 'meta-box-builder' ), ], ] );
$controls[] = \MBB\Control::Input( 'tab_default_active', __( 'Default active tab ID', 'meta-box-builder' ) );
return $controls;}A szűrő egyetlen paramétert kap, a vezérlők tömbjét. A vezérlőket ugyanúgy írod le, mint a mezőknél.
A feldolgozott beállítások módosítása
Szekció neve “A feldolgozott beállítások módosítása”A legtöbb esetben az új vezérlő vagy az új mezőtípus beállításai helyesen mentődnek. A mentett beállításokat a bővítmény PHP-tömbbé dolgozza fel, ezt használja a Meta Box és a kiegészítők, és a PHP-kód készítésénél is ez a feldolgozott eredmény kerül a kódba.
Ha a vezérlőben megadott érték helyett egyedi értéket szeretnél a mezőhöz, ezeket a szűrőket használhatod:
$field_settings = apply_filters( 'mbb_field_settings', $field_settings );$field_settings = apply_filters( "mbb_field_settings_{$field_type}", $field_settings );$field_group_settings = apply_filters( 'mbb_meta_box_settings', $field_group_settings );Például két vezérlőt hoztál létre a mezőkhöz: a custom_layout (jelölőnégyzet) és a layout (legördülő lista) vezérlőt. A feldolgozáskor nem akarod, hogy a custom_layout értéke true legyen, ha a layout-nak van értéke, mert ez felesleges. Ezt így érheted el:
add_filter( 'mbb_field_settings', 'your_prefix_parse_field_settings' );
function your_prefix_parse_field_settings( $field_settings ) { if ( ! empty( $field_settings['layout'] ) ) { unset( $field_settings['custom_layout'] ); }
return $field_settings;}Készült: