it-swarm.com.de

Benutzerdefinierte Metabox für benutzerdefinierte Seitenvorlage

Ich habe eine benutzerdefinierte Seitenvorlage erstellt. Jetzt muss ich es konfigurierbar machen. Da ich jedoch mehr als eine Vorlage in meinem Design verwende, möchte ich sicherstellen, dass die Konfiguration nur verfügbar ist, wenn der Benutzer diese Vorlage für eine Seite auswählt. Gibt es eine Option dazu?

add_meta_box akzeptiert einen anderen $post_type, daher kann ich am ehesten allen Seiten eine Metabox hinzufügen, die ich vermeiden möchte.

1
Dawid Adach
<?
// Check:
// 1. If you are editing post, CPT, or page
// 2. If post type IS NOT SET
if( 'post.php' == basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']) && !isset($_GET['post_type']) ) {

    // get post ID
    $postid = $_GET['post']; 

    // check the template file name
    if ('my_template.php' == get_page_template_slug($postid) ) {
        // add your metabox here
        add_action( 'add_meta_boxes', 'my_metabox' );
    }

}

Ich kann mich nicht erinnern, warum ich den Post-Typ und nicht die Post-ID überprüft habe, aber Sie können dies ändern

!isset($_GET['post_type'])

um zu überprüfen, ob die Post-ID eingestellt ist:

isset($_GET['post'])

Hinweis : Das Meta-Feld ist erst verfügbar, nachdem Sie Ihren Beitrag (Seite) mit der entsprechenden Vorlage gespeichert haben.

1
Max Yudin

" nur verfügbar, wenn Benutzer diese Vorlage auswählen "? Ich bin nicht sicher (ich bezweifle es), ob dies überhaupt möglich ist. Stattdessen würde ich eine der beiden folgenden Optionen vorschlagen:

Wenn Sie die Seitenvorlage pro Seite konfigurierbar machen möchten, können Meta-Boxen die richtige Richtung sein. Sie können beispielsweise eine Option wie "Ausgewähltes Bild als Hintergrund verwenden" oder Ähnliches hinzufügen.

Wenn Sie Ihre Seitenvorlage jedoch allgemeiner konfigurieren möchten, können Sie stattdessen die Themenoptionen verwenden. Hier ist eine Einführung in den Codex: https://codex.wordpress.org/Creating_Options_Pages

0
tillinberlin