Intereting Posts

Изменение категории должности из выпадающего меню

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

Поскольку вы можете видеть, что кнопка отправки формы обернута в теги <noscript> так что, когда опция выбрана из раскрывающегося списка, на данный момент она будет перенаправлена ​​на выбранную категорию.

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

Я отправляю форму в addcat.php где я думаю, мне нужно добавить скрипт, чтобы сделать что-то мне нужно?

 <form action="<?php bloginfo('url'); ?>/addcat.php" method="get"> <div> <?php $select = wp_dropdown_categories('show_option_none=Select category&show_count=0&orderby=name&echo=0&child_of=28&hide_empty=0'); $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select); echo $select; ?> <noscript><div><input type="submit" value="View" /></div></noscript> </div> </form> 

На данный момент у меня есть свои функции:

 function addPostToCategoryLauncher() { $newCatId = 28; $newCatId = get_cat_ID( 'my-category' ); $categories = wp_get_object_terms( $post->ID, 'category', array( 'fields' => 'ids' ) ); array_push( $categories, $newCatId ); $categories = array_unique( array_map( 'intval', $categories ) ); wp_set_object_terms( $post->ID, $categories, 'category' ); } add_action( 'init', 'addPostToCategoryLauncher' ); 

И в моем addcat.php

 if( !empty( $_POST['cat'] ) ) { add_action( 'init', 'addPostToCategoryLauncher' ); } header('Location: ' . $_SERVER['HTTP_REFERER']); 

Но это просто говорит добавить к catId = 28, но мне нужно, чтобы это была категория, выбранная из выпадающего списка Id 28, функция тоже не работает, поэтому может потребоваться несколько настроек.

Solutions Collecting From Web of "Изменение категории должности из выпадающего меню"

Ваша форма использует 'get' ( $_GET ), но addcat.php ищет значения $_POST . Это никогда не сработает. Но кроме того, у вас здесь довольно запутанная вещь. На самом деле вы не используете и функцию hooked, и addcat.php . Вам нужен тот или другой, и функция с крючками, вероятно, является лучшей идеей. Что-то вроде:

 function addPostToCategoryLauncher() { global $_GET; if (isset($_GET['cat']) && isset($_GET['postID')) { // I am assuming that 'cat' is the correct parameter name wp_set_object_terms( $_GET[postID], $_GET['cat'], 'category' ,true); } } add_action( 'init', 'addPostToCategoryLauncher' ); 

Вам нужно будет отправить postID с отправкой формы.

 <form action="<?php bloginfo('url'); ?>/addcat.php" method="get"> <input type="hidden" name="postID" value="<?php echo $post->ID; ?>" ?> <div> <?php $select = wp_dropdown_categories('show_option_none=Select category&show_count=0&orderby=name&echo=0&child_of=28&hide_empty=0'); $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select); echo $select; ?> <noscript><div><input type="submit" value="View" /></div></noscript> </div> </form> 

Это функции barebone. Вам нужно включить некоторую проверку здравомыслия для значений $_GET и вы действительно должны использовать также nonces .

Я сделал некоторые предположения о том, как работает ваш код, поэтому могут быть сбои, и может быть лучший крючок, который init но мне придется осмотреться.

Попробуй это.