Как сохранить флажок мета-бокс в WordPress?

Я пытаюсь добавить флажок в мой пользовательский мета-бокс в WordPress и я столкнулся с проблемой с сохранением его - всякий раз, когда я устанавливаю флажок и обновить пост/страницу, он возвращается без флажка снова.

Вот код, который я использую:

add_meta_box(
    'sl-meta-box-sidebar',      // id
    'Sidebar On/Off',           // title
    'sl_meta_box_sidebar',      // callback function
    'page',                     // type of write screen
    'side',                     // context
    'low'                       // priority
);

function sl_meta_box_sidebar() {
    global $meta; sl_post_meta( $post->ID ); ?>
    <input type="checkbox" name="sl_meta[sidebar]" value="<?php echo htmlspecialchars ($meta['sidebar']); ?>" />Check to turn the sidebar <strong>off</strong> on this page.
}

Это создает флажок на боковой панели экрана «Edit Page», как и должно, никаких проблем там нет. Я не уверен, что я должен ввести в значение флажка, с текстовыми полями он, очевидно, возвращает то, что было сохранено в качестве метаинформации... Я попытался просто использовать «проверенный» вместо причины, которая будет моим первым предположением (затем просто проверить значение при использовании этих метаданных), но он также не сохранил флажок.

Вот функция, которая сохраняет все метаданные, что, как я полагаю, вызывает эту проблему:

function sl_save_meta_box( $post_id, $post ) {
    global $post, $type;

    $post = get_post( $post_id );

    if( !isset( $_POST[ "sl_meta" ] ) )
        return;

    if( $post->post_type == 'revision' )
        return;

    if( !current_user_can( 'edit_post', $post_id ))
        return; 

    $meta = apply_filters( 'sl_post_meta', $_POST[ "sl_meta" ] );

    foreach( $meta as $key => $meta_box ) {
        $key = 'meta_' . $key;
        $curdata = $meta_box;
        $olddata = get_post_meta( $post_id, $key, true );

        if( $olddata == "" && $curdata != "" )
            add_post_meta( $post_id, $key, $curdata );
        elseif( $curdata != $olddata )
            update_post_meta( $post_id, $key, $curdata, $olddata );
        elseif( $curdata == "" )
            delete_post_meta( $post_id, $key );
    }

    do_action( 'sl_saved_meta', $post );
}

add_action( 'save_post', 'sl_save_meta_box', 1, 2 );

Она прекрасно работает для текстовых полей, но флажок просто не сохранит. Я не уверен, что функция сохранения неверна, или я упускаю что-то о значении флажка.

Любая помощь ценится!

-121--1244146- Что означает точка в R - личном предпочтении, соглашении об именовании или более? Я (вероятно) НЕ ИМЕЮ в виду «все другие переменные», означающие как var1 ~. здесь. Мне еще раз указали на plyr и посмотрели на mlplyand интересно, почему параметры определяются с ведущей точкой...

Я (вероятно) НЕ ИМЕЮ в виду «все другие переменные», означающие как var1 ~. здесь. Мне еще раз указали на plyr и посмотрели на mulply и задались вопросом, почему параметры определяются с ведущей точкой так:

function (.data, .fun = NULL, ..., .expand = TRUE, .progress = "none", 
.parallel = FALSE) 
{
if (is.matrix(.data) & !is.list(.data)) 
    .data <- .matrix_to_df(.data)
f <- splat(.fun)
alply(.data = .data, .margins = 1, .fun = f, ..., .expand = .expand, 
    .progress = .progress, .parallel = .parallel)
}
<environment: namespace:plyr>

Что это за использование? Это просто личное предпочтение, соглашение об именовании или больше? Часто R настолько функциональен, что я упускаю трюк, который давно был сделан раньше.

71
задан Matt Dowle 27 March 2013 в 14:28
поделиться

1 ответ

Если пользователь определит функцию .doSomething и будет ленив для определения всей roxygen документации для параметров, то она не генерирует ошибки для компиляции пакета

0
ответ дан 24 November 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: