Ankerlink an den Anfang der Seite
foto von phil desforges
Generic filters
Filter by Kategorien

Der Beitrag, geschriebem am 16. April 2022, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein

Unter Anwendung der Metabox-Erweiterung MB Settings Page und Meta Box Tabs entwarf ich vor kurzem für eine mehrsprachgige Multisite-Umgebung über die visuelle Oberfläche Einstellungen, die sich auf mehrere Tabs aufteilen sollten, um dann den Code generieren zu lassen, in ein Plugin einzufügen, und global verfügbar zu haben.

Bevor in den Einstellungen einer Feldgruppe festgelegt werden kann, dass die Felder für Einstellungen vorgesehen sind, braucht es erstmal die Settingspage. Innerhalb einer neuen Settingspage können dann Tabs definiert werden. Jedes Tab bekommt einen „Key“ und einen „Value“. Der Schlüssel entspricht der ID (daher wenn möglich nur Kleinbuchstaben verwenden, ggf. Bindestriche), der Wert ist der Titel des Tabs.

Für jedes Tab wird später eine eigene Feldgruppe definiert. Das tat ich dann auch, generierte die Codes, und fügte sie in mein Plugin ein. Die „Settings Page“ war an der richtigen Stelle, und auch die Tab konnte ich sehen. Doch der Bereich in dem in den Tabs die Einstellungen zu sehen sein wollten, waren allesamt leer, obgleich die Einstellungen korrekt zugeordnet waren.

So sieht ein generiertes Code-Snippet aus, um eine Settings Page mit Tabs anzulegen.

add_filter( 'mb_settings_pages', 'product_cat_contents' );

function product_cat_contents( $settings_pages ) {

    $settings_pages[] = [
        'menu_title'    => __( 'Product Cat Contents', 'my-plugins-textdomain' ),
        'option_name'   => 'product_cat_contents',
        'position'      => 25,
        'parent'        => 'edit.php?post_type=product',
        'capability'    => 'edit_pages',
        'columns'       => 1,
        'tabs'          => [
            'cat-pdf'          => 'Category based PDFs',
            'cat-content-tabs' => 'Category based content tabs',
        ],
        'icon_url'      => 'dashicons-admin-generic',
    ];

    return $settings_pages;
}  

Das Snippet für das Tab cat-pdf

add_filter( 'rwmb_meta_boxes', 'pdf_files_based_on_categories' );

function pdf_files_based_on_categories( $meta_boxes ) {
    $prefix = 'myprefix_';  

    $meta_boxes[] = [
        'title'          => __( 'Product Category PDF Files', 'my-plugins-textdomain' ),
        'id'             => 'product-category-pdf-files',
        'settings_pages' => ['product-cat-contents'],
        'tab'            => 'cat-pdf',
        'fields'         => [
            [
                'name'       => __( 'Categories PDF', 'my-plugins-textdomain' ),
                'id'         => $prefix . 'categories_pdf',
                'type'       => 'group',
                'clone'      => true,
                'add_button' => __( 'new file', 'my-plugins-textdomain' ),
                'fields'     => [
                    [
                        'name'    => __( 'PDF Icon', 'my-plugins-textdomain' ),
                        'id'      => 'pdf_icon',
                        'type'    => 'image_select',
                        'options' => [
                            'icon-1' => plugins_url( 'assets/images/icon-1.png', dirname( dirname( __FILE__ ) ) ),
                            'icon-2' => plugins_url( 'assets/images/icon-2.png', dirname( dirname( __FILE__ ) ) ),
                            'icon-3' => plugins_url( 'assets/images/icon-3.png', dirname( dirname( __FILE__ ) ) ),
                            'icon-4' => plugins_url( 'assets/images/icon-4.png', dirname( dirname( __FILE__ ) ) ),
                            'icon-5' => plugins_url( 'assets/images/icon-5.png', dirname( dirname( __FILE__ ) ) ),
                            'icon-6' => plugins_url( 'assets/images/icon-6.png', dirname( dirname( __FILE__ ) ) )
                        ],
                        'columns' => 5,
                    ],
                    [
                        'name'    => __( 'PDF File', 'my-plugins-textdomain' ),
                        'id'      => 'pdf_file',
                        'type'    => 'file_advanced',
                        'columns' => 3,
                    ],
                    [
                        'name'       => __( 'Show in', 'my-plugins-textdomain' ),
                        'id'         => 'show_in',
                        'type'       => 'taxonomy_advanced',
                        'taxonomy'   => ['product_cat'],
                        'field_type' => 'select_advanced',
                        'multiple'   => true,
                        'columns'    => 4,
                    ],
                ],
            ],
        ],
    ];

    return $meta_boxes;
}

Im ersten Snippet fehlte die Zeile mit der ID der Settings-Page.

add_filter( 'mb_settings_pages', 'product_cat_contents' );

function product_cat_contents( $settings_pages ) {

    $settings_pages[] = [
        'menu_title'    => __( 'Product Cat Contents', 'my-plugins-textdomain' ),
        'id' => 'product-cat-contents',
        'option_name'   => 'product_cat_contents',
        'position'      => 25,
        'parent'        => 'edit.php?post_type=product',
        'capability'    => 'edit_pages',
        'columns'       => 1,
        'tabs'          => [
            'cat-pdf'          => 'Category based PDFs',
            'cat-content-tabs' => 'Category based content tabs',
        ],
        'icon_url'      => 'dashicons-admin-generic',
    ];

    return $settings_pages;
}  

Bitte das Kommentarfeld nicht für Supportanfragen nutzen; hier kann kein Support angeboten werden. Die Angabe von Name oder E-Mail-Adresse ist optional, ein Spitzname wäre trotzdem nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Name und E-Mail-Adresse (beides optional, da alle Kommentare moderiert werden) werden dauerhaft gespeichert. Über dieses Formular kann jeder Zeit die Löschung persönlicher Daten oder Kommentare angefordert werden; die Anfrage wird nicht veröffentlicht und nach der Bearbeitung gelöscht. IP-Adressen, die mit Kommentaren gespeichert werden, werden nach zwei Monaten automatisch gelöscht.

Ihre Nachricht wird möglicherweise zur Spam-Prüfung an OpenAI (USA) weitergeleitet. Weitere Informationen finden Sie in unserer Datenschutzerklärung.