Intereting Posts
Подделка отметьте пункт меню как current_page_item / active в WordPress Предупреждение о представлении формы: невозможно изменить ошибку заголовка только тогда, когда плагин отключен Fancybox не работает. Зачем? Категории WordPress в группах данных добавить класс span внутри тега привязки ссылки wp_nav_menu Получить сообщение по критерию поиска Слияние двух отдельных меню WP в один в режиме Mobile view Получите общее количество всех комментариев и результат отображения Как выполнить внешний HTTP-вызов с помощью AJAX, когда плагин сохранит новые настройки? Отобразить предстоящие события на следующие 7 дней Отображение имени входа в систему в WordPress Menu Как ограничить размер изображения для всего веб-сайта? Но без редактирования сообщения (css / plugin ?!) Как объявить / предоставить путь к файлу в JQuery, который выдается в теме WordPress current_time («timestamp»), похоже, отличается от реального текущего времени Удалить вложения изображения с jQuery с передней стороны

Как добавить кнопки в пользовательский столбец в таблице таксономии?

Я работаю над издательской системой, основанной на проблемах, для моего друга. До сих пор я создал обычную таксономию под названием «Проблема»; добавили несколько настраиваемых полей в пользовательскую таксономию (например, «Номер проблемы», «URL-адрес PDF» и «Опубликован?»); и расширили страницу управления таксономией с дополнительными столбцами, чтобы показать данные пользовательских терминов.

Теперь я хочу реализовать удобный метод для публикации (и публикации) отдельных вопросов. Мой план состоит в том, чтобы добавить дополнительный пользовательский столбец на страницу управления таксономией, содержащую кнопки «Опубликовать» и «Отменить публикацию» . Поэтому я попытался заполнить настраиваемый столбец формой, содержащей скрытые поля данных и видимую кнопку отправки; в основном я дублировал функциональность формы редактирования термина по умолчанию и помещал ее в ячейки таблицы.

Проблема в том, что вся таблица управления таксономией завернута в форму, называемую «post-filter», и формы не могут быть вложенными . Поэтому мое решение не работает должным образом.

Есть ли подходящее решение для добавления таких кнопок в пользовательский столбец? Любые предложения приветствуются!

Изображение для уточнения: http://img845.imageshack.us/img845/669/customcol.png

add_filter("manage_issue_custom_column", 'manage_issue_columns', 10, 3); // The function that manages the custom columns function manage_issue_columns($out, $column_name, $issue_id) { $issue = get_term($issue_id, 'issue'); switch ($column_name) { case 'issue_pdf_url': $term_meta = get_option( "taxonomy_term_$issue_id" ); if ( isset( $term_meta["issue_pdf_url"] ) ){ $out .= $term_meta["issue_pdf_url"]; } break; case 'issue_num': $term_meta = get_option( "taxonomy_term_$issue_id" ); if ( isset( $term_meta["issue_num"] ) ){ $out .= $term_meta["issue_num"]; } break; //This is the column where I need to add buttons case 'issue_published': $term_meta = get_option( "taxonomy_term_$issue_id" ); $term_object = get_term($issue_id, "issue"); if ( isset( $term_meta["issue_published"] ) && $term_meta["issue_published"] == "yes" ){ //This is the form which shows the publishing buttons; not working due to being nested in other form $out .= '<form name="edittag" id="edittag" method="post" action="edit-tags.php" class=""> <input type="hidden" name="action" value="editedtag" /> <input type="hidden" name="tag_ID" value="' . esc_attr($issue_id) . '" /> <input type="hidden" name="taxonomy" value="issue" /> ' . wp_original_referer_field(true, 'current') . wp_nonce_field('update-tag_' . $issue_id) . ' <input name="name" id="name" type="hidden" value="' . $term_object->name . '" /> <input name="slug" id="slug" type="hidden" value="' . $term_object->slug .'" /> <input name="description" id="description" type="hidden" value="' . $term_object->description .'" /> <input type="hidden" value="" checked="" id="term_meta[issue_published]" name="term_meta[issue_published]"> <input type="submit" value="Unpublish" class="button-primary" id="submit" name="submit"></form>'; } else { $out .= '<form name="edittag" id="edittag" method="post" action="edit-tags.php" class=""> <input type="hidden" name="action" value="editedtag" /> <input type="hidden" name="tag_ID" value="' . esc_attr($issue_id) . '" /> <input type="hidden" name="taxonomy" value="issue" /> ' . wp_original_referer_field(true, 'current') . wp_nonce_field('update-tag_' . $issue_id) . ' <input name="name" id="name" type="hidden" value="' . $term_object->name . '" /> <input name="slug" id="slug" type="hidden" value="' . $term_object->slug .'" /> <input name="description" id="description" type="hidden" value="' . $term_object->description .'" /> <input type="hidden" value="yes" checked="checked" id="term_meta[issue_published]" name="term_meta[issue_published]"> <input type="submit" value="Publish" class="button-primary" id="submit" name="submit"></form>'; } break; default: break; } return $out; } 

Solutions Collecting From Web of "Как добавить кнопки в пользовательский столбец в таблице таксономии?"

Для чего-то подобного вы можете подумать о добавлении «действия»; которые появляются при наведении другого элемента.

Следующий код не является полным и не был протестирован, но должен помочь вам на правильном пути.

Добавьте действие

Во-первых, чтобы добавить ссылку действия, используйте tag_row_actions . (Имейте в виду, что функция, подключенная к ней, будет запущена по каждой таксономии, поэтому вам нужно проверить таксономию). Что-то вроде:

 add_filter('tag_row_actions','my_term_action',10,2); function my_term_action($actions,$tag){ if($tag->taxonomy == 'issue'): $actions['my-action-class'] = '<a href="#"> My action </a>'; endif; return $actions; } 

Массив $actions является ассоциативным, где ключ станет классом элемента span который обертывает действие. Значение – это то, что будет span .

Вы можете использовать $tag (это объект, термин id задается с помощью $tag->term_id ), чтобы определить, какое действие нужно отобразить, поэтому, если вы хотите отобразить действие публикации

 $actions['my-action-class'] = '<a class="Publish" termid="'.$tag->term_id.'" href="#"> Publish </a>'; 

и если вы хотите отобразить действие «unpublish», вместо этого добавьте:

 $actions['my-action-class'] = '<a class="Unpublish" termid="'.$tag->term_id.'" href="#"> Unpublish </a>'; 

Я даю им разные классы и дополнительный атрибут. Это будет использоваться jQuery / AJAX для выполнения соответствующего действия …

JQuery / AJAX

 jQuery(document).ready(function(){ jQuery(".my-action-class a").click(function(){ change_publish_states(jQuery(this)); }); }); function change_publish_states(el){ if(el.hasClass('Publish')){ new_state = 'Unpublish'; }else{ new_state = 'Publish'; } jQuery.getJSON(ajaxurl, { term_id: el.attr("termid"), action: "my_change_publish_state", new_state: new_state }, function(data) { if (data.error){ alert(data.error); }else{ //Update label and class el.text(data.new_state); el.attr('class', data.new_state) } }); } 

Вам нужно добавить этот скрипт на странице пользовательских таксономий, вы можете запустить функцию на admin_enqueue_scripts чтобы проверить просматриваемую страницу и условно поставить ее в очередь;

 add_action('admin_enqueue_scripts','load_my_ajax_script'); function load_my_ajax_script(){ //Check globals like $pagenow=='edit-tags' and $taxonomy=='issues' or $current_screen //to make sure you are on the right page and enqueue script - or add a filter //to print the script at the footer. global $current_screen; if ( $current_screen->id != 'edit-issue' ) return; wp_enqueue_script( 'my_ajax_save', get_stylesheet_directory_URI() . '/my_ajax_save.js' ); } 

Затем остается добавить функцию на крючок действия AJAX:

Действие AJAX

 add_action('wp_ajax_my_change_publish_state', 'change_the_publish_state'); function change_the_publish_state(){ $term_id = $_GET['term_id']; $new_state = $_GET['new_state']; //Perform checks / logic & update publish status. $term_meta = get_option( "taxonomy_term_$term_id" ); if ( $new_state == "Unpublish" ) $term_meta['issue_published'] = 'yes'; if ( $new_state == "Publish" ) $term_meta['issue_published'] = ''; update_option( "taxonomy_term_$term_id", $term_meta ); //return the new state of the term $result['new_state'] = $new_state; echo json_encode($result); exit(); }