Intereting Posts
Как распознать, на каком сайте находится контент? Перенаправить посетителей на страницу временного обслуживания Как отправлять пользовательские данные в формате json на другой сервер, когда пользователь регистрируется на сайте wordpress в PHP Удалить теги P из изображений WPDB-запрос – дешифрование данных БД Ограничить роль для просмотра собственных медиа Результаты тегов не отображаются для типов сообщений Использование нескольких add_action с параметрами внутри класса Исключить изображение из галереи в wp-admin Создайте подпапку разработки для моего сайта WordPress Блокировка одного блога многих из нескольких приложений Word / Word WordPress Смещение сообщения в цикле с использованием PageNavi Plug-in Скопировать данные с веб-сайта и опубликовать их в блоге Как разрешить wordpress создавать имя пользователя с такими символами, как + Когда oEmbed не работает, отобразите альтернативу

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

Я показываю список сообщений на переднем плане моего сайта 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 но мне придется осмотреться.

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