Tovább a tartalomhoz

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.

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:

  1. A beállítás neve.
  2. 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ő.
  3. Alapérték. Nem kötelező.
  4. A beállítások füle: general (alapértelmezett) vagy advanced. 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).

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:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások