2016-08-10 7 views
0

代謝物チェックボックスが選択されているページでwpautopフィルターを無効にしようとしています。ワードプレス代謝物のチェックボックスの値を使用

ここに私のチェックボックスを追加するコードがありますが、これは少し冗長ですが、もともとは複数の要素を追加した例から取ったものです。私は後でそれを編集するつもりです。

$prefix = 'dbkt_'; 

$meta_box = array(
    'id' => 'my-meta-box', 
    'title' => 'Disable Automatic formatting?', 
    'page' => 'page', 
    'context' => 'normal', 
    'priority' => 'high', 
    'fields' => array(
     array(
      'name' => 'Disable wpautop?', 
      'id' => $prefix . 'checkbox', 
      'type' => 'checkbox' 
     ) 
    ) 
); 

add_action('admin_menu', 'mytheme_add_box'); 

// Add meta box 
function mytheme_add_box() { 
    global $meta_box; 

    add_meta_box($meta_box['id'], $meta_box['title'], 'mytheme_show_box', $meta_box['page'], $meta_box['context'], $meta_box['priority']); 
} 



// Callback function to show fields in meta box 
function mytheme_show_box() { 
    global $meta_box, $post; 

    // Use nonce for verification 
    echo '<input type="hidden" name="mytheme_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />'; 

    echo '<table class="form-table">'; 

    foreach ($meta_box['fields'] as $field) { 
     // get current post meta data 
     $meta = get_post_meta($post->ID, $field['id'], true); 

     echo '<tr>', 
       '<th style="width:20%"><label for="', $field['id'], '">', $field['name'], '</label></th>', 
       '<td>'; 
     switch ($field['type']) { 
      case 'text': 
       echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" size="30" style="width:97%" />', '<br />', $field['desc']; 
       break; 
      case 'textarea': 
       echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>', '<br />', $field['desc']; 
       break; 
      case 'select': 
       echo '<select name="', $field['id'], '" id="', $field['id'], '">'; 
       foreach ($field['options'] as $option) { 
        echo '<option ', $meta == $option ? ' selected="selected"' : '', '>', $option, '</option>'; 
       } 
       echo '</select>'; 
       break; 
      case 'radio': 
       foreach ($field['options'] as $option) { 
        echo '<input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name']; 
       } 
       break; 
      case 'checkbox': 
       echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta ? ' checked="checked"' : '', ' />'; 
       break; 
     } 
     echo  '</td><td>', 
      '</td></tr>'; 
    } 

    echo '</table>'; 
} 


add_action('save_post', 'mytheme_save_data'); 

// Save data from meta box 
function mytheme_save_data($post_id) { 
    global $meta_box; 

    // verify nonce 
    if (!wp_verify_nonce($_POST['mytheme_meta_box_nonce'], basename(__FILE__))) { 
     return $post_id; 
    } 

    // check autosave 
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
     return $post_id; 
    } 

    // check permissions 
    if ('page' == $_POST['post_type']) { 
     if (!current_user_can('edit_page', $post_id)) { 
      return $post_id; 
     } 
    } elseif (!current_user_can('edit_post', $post_id)) { 
     return $post_id; 
    } 

    foreach ($meta_box['fields'] as $field) { 
     $old = get_post_meta($post_id, $field['id'], true); 
     $new = $_POST[$field['id']]; 

     if ($new && $new != $old) { 
      update_post_meta($post_id, $field['id'], $new); 
     } elseif ('' == $new && $old) { 
      delete_post_meta($post_id, $field['id'], $old); 
     } 
    } 
} 

これはすべて正常に動作しています。チェックボックスが必要な編集ページに追加され、状態が正しく保存されます。私が問題を抱えている部分は、実際にはチェックボックスの値を取得し、この値に基づいてwpautopを無効にすることです。ここで

は、チェックボックスに基づいてフィルタを無効にするための私の(動作しない)コードです:

$is_checked = get_post_meta($post->ID, 'my-meta-box', true); 

    if($is_checked){ 
     remove_filter('the_content', 'wpautop'); 
     remove_filter('the_excerpt', 'wpautop'); 
    } 

私は一般的にはPHPやWebプログラミングには本当に新しいですので、私はしようと、本当に苦労しています私のコードをデバッグする方法を理解する。 PHPで印刷できるコンソールに相当するものはありますか? WordPress開発環境で作業しているときにコードをデバッグする一般的なプロセスは何ですか?

答えて

0

私はチェックで関数を囲む必要がありました&アクションコールを使用します。 PHPが実行された順番とチェックボックスの値が何かを受け取っていますか?誰かがなぜ私がそれをこのようにしなければならなかったのかを説明できるなら、それはすばらしいでしょう。ここで

は、作業コードです:

add_action('template_redirect','my_function'); 
 
function my_function(){ 
 
    $is_checked = get_post_meta(get_the_ID(), 'dbkt_checkbox', true); 
 
    if($is_checked) { 
 
     remove_filter('the_content', 'wpautop'); 
 
     remove_filter('the_excerpt', 'wpautop'); 
 
} 
 
}

関連する問題