Добавить список с категориями на выбор и сохранить его в качестве категории для сообщения - PullRequest
0 голосов
/ 03 мая 2019

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

Мой вопрос: как это сделать правильно?

Мой код выглядит следующим образом:

                           if(isset($_POST['entry']) AND !$_POST['entry'] == ""):
$my_post = array();

$my_post['post_title']   = $_POST['title'];
$my_post['post_content'] = $_POST['entry'];
$my_post['post_status']  = 'publish';

$cat_name             = sanitize_text_field( $_POST['newcat'] );
$my_post ['cat_name'] = $cat_name;

$category_id = get_cat_ID( $_POST['newcat'] );

if ( ! $category_id ) {
    if ( ! is_admin() ) {
        die();
    }
$args = array(
    'description' => "Category description",
    'parent' => 0);
    $category_id = wp_insert_term( $_POST['newcat'], "category", $args );
}

$my_post['post_author'] = get_current_user_id();

$my_post['tax_input'] = array('category' => $category_id);


wp_insert_post( $my_post );

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

$categories=get_categories();   foreach($categories as $category) {     echo "<input type='checkbox' name='mychecky' value='$category->term_id' />";    echo $category->cat_name;
    echo '<br>';    }

Как сохранить выбранную категориюза контрольный список для моего сообщения?

1 Ответ

2 голосов
/ 03 мая 2019

В вашей форме контрольный список должен принимать несколько значений, поэтому он должен быть массивом.Массив в HTML-формах имеет квадратные скобки [], поэтому имя вашего флажка должно выглядеть как mychecky[].Полный код для ввода флажков:

$categories = get_categories();
foreach($categories as $category) {
   echo "<label><input type='checkbox' name='mychecky[]' value='$category->term_id' />$category->cat_name</label><br>";
}

Затем, когда вы проверяете данные POST, вы должны ожидать массив из формы, и вы можете назначить его так, как он есть, так как параметр post_category в любом случае должен быть массивом:

// it is an array from a form with category IDs
if (isset($_REQUEST['mychecky'])) {
   $my_post['post_category'] = $_REQUEST['mychecky'];
}

Вы можете использовать свои методы с таксономией или использовать встроенную post_category, проверить документы для wp_inset_post function.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...