Категории от фронтенда, выбор флажка не работает

Я использую сменное Сообщение от сайта, который настраивает устройство записи фронтэнда WP. Я изменил некоторую строку кода, потому что я должен выбрать категории с флажками, а не с несколькими выбирают (как это было первоначально в плагине). К сожалению, это не работает: существует флажок в устройстве записи фронтэнда, теперь, но устанавливающий флажки просто ничего не делает: сообщение сохраняется без категорий.

Вот код, который обрабатывает выбор таксономии:

public function get_taxonomy_list( $taxonomy ){
    $terms = get_terms($taxonomy, array(
        'hide_empty' => 0
    ));
    if (!$terms || empty($terms)) return '';
    //preg_match_all('/\s*<input class="(\S*)" value="(\S*)" type="checkbox">(.*)<\/input>\s*/', $terms, $matches, PREG_SET_ORDER);
    $out = apply_filters( 'pfs_taxonomy_label', "<label for='terms_$taxonomy'>Seleziona i corsi</label>", $taxonomy );
    foreach ($terms as $term){
        if (is_taxonomy_hierarchical($taxonomy))
            $out .= "<input class='{$term->term_taxonomy_id}' type='checkbox' value='{$term->term_taxonomy_id}' name='{$term->term_taxonomy_id}' /> {$term->name}<br />";
        else
            $out .= "<input class='{$term->term_taxonomy_id}' type='checkbox' value='{$term->name}' name='{$term->name}' /> {$term->name}";
    }
    $out .= "<br />\n";
    return apply_filters("pfs_{$taxonomy}_list",$out);
}

и вот код, который сохраняет сообщение и таксономию (который я не изменил):

$postarr['tax_input'] = (array_key_exists('terms',$pfs_data)) ? $pfs_data['terms'] : array();
$post_id = wp_insert_post($postarr);
0
07.10.2012, 17:56
2 ответа

Вы изменили значение атрибута имени флажка. Необходимо использовать то же значение имени: условия [$taxonomy] []

Это должно исправить код:

if (is_taxonomy_hierarchical($taxonomy))
        //$out .= "<input class='{$term->term_taxonomy_id}' type='checkbox' value='{$term->term_taxonomy_id}' name='{$term->term_taxonomy_id}' /> {$term->name}<br />";
        $out .= "<input class='{$term->term_taxonomy_id}' type='checkbox' value='{$term->term_taxonomy_id}' name='terms[{$taxonomy}][]' /> {$term->name}<br />";
    else
        // $out .= "<input class='{$term->term_taxonomy_id}' type='checkbox' value='{$term->name}' name='{$term->name}' /> {$term->name}";
        $out .= "<input class='{$term->term_taxonomy_id}' type='checkbox' value='{$term->name}' name='terms[{$taxonomy}][]' /> {$term->name}";
}
1
20.02.2020, 00:13

Я обычно использую http://codex.wordpress.org/Function_Reference/wp_set_post_terms

при установке taxonomies на создании сообщения.

$post_id = wp_insert_post();
if($post_id){
   wp_set_post_terms($post_id, $postarr['tax_input'], 'category' );
}
0
20.02.2020, 00:13

Теги

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