2016-05-14 5 views
0

ポストにサイドバーを追加するためのメタボックスを作成しました。ユーザーがサイドバーのラジオボタンをチェックするかどうかに基づいてifステートメントを使用して、get_sidebar関数がポストテンプレートに追加されますが、それはまだありません。WordPressのメタボックス投稿を更新した後、チェックされたラジオボタンをチェックする方法

これまでmetaboxは、エディタ画面に表示さが、私はサイドバーのラジオボタンをチェックしたときに、私はポストを更新した後、それはオフに戻ります。

これは、私はポストを更新した後にチェックラジオボタンを維持するために使用していますものです。

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

これは私がmetaboxを作成および更新するために使用しています完全なコードです:

<?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'); 

?> 

答えて

0
+0

おかげで私は、私はあなたが提案し、何も変わっていないものをやってみました@Billkこのサイトに –

0

まず、メタ値を保存するとき、保存される値を追加します。

それは好みの問題だが、私は設定しますそれ以外の場合は 'on'に設定します。

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

投稿を更新した後、get_post_metaを使用して保存した値を取得し、必要に応じてラジオボタンを設定します。私のためにそれらのリンクを収集するための

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

感謝を使用する前にすべての3件の記事を読みました:WP checked()機能は、このために便利です。たぶん私は何かを誤解しました。最初のブロックで共有したコードの最初の行にセミコロンがあるとしますか? –

+0

セミコロンは[三項演算子]の一部です(http://php.net/manual/en/language.operators.comparison.php )、if:elseの省略形です。 '$ layout'が条件を満たしていれば、メタテーブルに 'on'を格納します。else(:)は空文字列を格納します。元のコードがデータベースからメタボタンの値を取得していないようですが、phpMyAdminを使用してデータベースを検索しましたか? – BillK

関連する問題