2016-05-14 8 views
0

Ich habe eine Metabox erstellt, die verwendet werden kann, um eine Seitenleiste zu einem Beitrag hinzufügen. Die Funktion get_sidebar wird der Post-Vorlage mit einer if-Anweisung hinzugefügt, basierend darauf, ob der Benutzer den Optionsschalter der Seitenleiste überprüft oder nicht, aber ich bin noch nicht so weit.Auf WordPress Metabox Wie Sie das Kontrollkästchen aktiviert nach Update Post

Bis jetzt erscheint die Metabox auf dem Editor-Bildschirm, aber wenn ich die Optionsschaltfläche der Seitenleiste ankreuze, wird sie deaktiviert, nachdem ich den Beitrag aktualisiert habe.

Dies ist, was ich verwende, um den Radio-Button aktiviert zu halten, nachdem der Beitrag aktualisiert wurde.

$layout = $_POST["layout"]; 
<input type="radio" name="layout" <?php if (isset($layout) && $layout=="right-sidebar") echo "checked"; ?> value="right-sidebar"> 

Dies ist der vollständige Code, den ich die metabox erstellen und zu aktualisieren, bin mit:

<?php 

function hill_add_layout_metabox() { 

    add_meta_box(
     'layout_metabox', 
     'Layout1', 
     'hill_callback_layout_matabox', 
     'post', 
     'side', 
     'high' 
    ); 
} 

add_action('add_meta_boxes', 'hill_add_layout_metabox'); 

function hill_callback_layout_matabox() { 
    $layout = $_POST["layout"]; 
    ?> 
    <input type="radio" name="layout" <?php if (isset($layout) && $layout=="right-sidebar") echo "checked"; ?> value="right-sidebar"> Right Sidebar 

    <?php 
} 

function hill_save_layout_metabox($post_id) { 
    $is_autosave = wp_is_post_autosave ($post_id); 
    $is_revision = wp_is_post_revision ($post_id); 

    if ($is_autosave || $is_revision) { 
     return; 
    } 

    $layout = $_POST["layout"]; 

    if (isset($layout) && $layout=="right-sidebar") { 
     update_post_meta($post_id, $layout); 
    } 
} 

add_action('save_post', 'hill_save_layout_metabox'); 

?> 

Antwort

0
+0

Dank für das Sammeln diese Links für mich, aber ich habe alle drei Artikel vor der Benutzung dieser Website –

0

Zuerst wird, wenn die Meta-Wert zu speichern, fügen Sie einen Wert gespeichert werden:

Es ist eine Frage des persönlichen Geschmacks, aber ich werde das Set Wert auf 'on', wenn andere weise überprüft ''.

$value = isset($layout) && $layout=='right-sidebar' ? 'on' : '' 
update_post_meta($post_id, 'right-sidebar', $value ); 

Nachdem Sie den Beitrag aktualisiert haben, holen Sie den Wert, den Sie gespeichert haben, mit get_post_meta und setzen Sie den Radiobutton, falls erforderlich; die WP checked() Funktion ist für diese handliche:

<?php $check = get_post_meta($post_id, 'right-sidebar', true); ?> 
<input type="radio" name="layout" <?php checked($check, 'on'); ?> value="right-sidebar"> 
+0

Dank lesen @Billk Ich habe versucht zu tun, was Sie vorgeschlagen und nichts geändert. Vielleicht habe ich etwas falsch verstanden. Soll es ein Semikolon in der ersten Codezeile geben, die Sie im ersten Block freigegeben haben? –

+0

Das Semikolon ist Teil des [Ternary Operator] (http://php.net/manual/en/language.operators.comparison.php)), eine Abkürzung für if: else. Wenn '$ layout' die Bedingungen erfüllt, speichert 'on' in der Meta-Tabelle else (:) speichert eine leere Zeichenfolge. Es sieht so aus, als ob Ihr ursprünglicher Code den Meta-Button-Wert nicht von der Datenbank erhält. Haben Sie phpMyAdmin verwendet, um in Ihrer Datenbank nachzusehen? – BillK