Intereting Posts
Клиент не может проверить продукт, даже если он находится на складе обычную, статическую домашнюю страницу / целевую страницу с темой Twenty Eleven? Создавать разные сайты по многосайтовому эталонному сценарию Вкладки администратора для настраиваемого плагина Комбинация PHP и Shortcode Как добавить разрывы строк внутри подписи галереи Отображать только липкую запись или последнее сообщение в пользовательском цикле Выберите пользователя, объединив несколько значений метаданных Добавьте drop down в виджет, если он находится в определенной области как ограничить правку edit_form_after_title на странице и опубликовать только редактирование? как можно переадресовывать вход и выходить из интерфейса front-end, а не wp-login .php в форме комментария в wordpress Как сохранить html и текст в базе данных? Как определить, $ query_var isset? Цикл с двумя колонками с одной строкой Как перехватить update_option () перед сохранением данных?

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

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

Ваша форма использует '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 но мне придется осмотреться.

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