WordPress как на ладони

Массовое редактирование — исключить таксономию

Собственно вот скрин как массово можно добавить в пост таксономии (теги категории и прочее)
Возник вопрос, а как собственно массово из выбранных постов убрать ненужную таксономию (тег и прочее)??

Заметки к вопросу:
Kama 6 лет назад

Что имеется ввиду под «добавить в пост таксономии», Прикрепить пост к термину? Открепляются они также как прикрепляются (снимай галку, удаляй тег)... Но чет это слишком просто, поэтому не понял вопроса...

kolshix 6 лет назад

Прикрепить термин к посту?

да именно так, прикрепить легко, а открепить кнопки нет.

Прямой пример, у меня набор карточек и к некоторым прикреплен тег (КАРТОЧКА), а это на самом деле (НАКЛЕЙКА)

вот пример
постам принадлежит таксономия тип изделия ФИГУРКА, но при массовом редактировании этой галочки нет и она и не отмечена - но если редактировать по отдельности то галочку я увижу

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

50 постов с тегом черное, белое (как тут исключить тег черное?)
50 постов белое

а мне нужно просто 100 белое.

Kama 6 лет назад

Теперь понятно, чет сразу не въехал smile Похоже ВП такую штуку не поддерживает, да и по логике немного сложно это поддерживать... Если прям очень надо, то вот статья в помощь.

1
kolshix
6 лет назад 779
  • 0

    Обнаружил хорошую штуку для фильтра вывода постов, попробуй, возможно это то что нужно:

    <?php
    if (!class_exists('Tax_CTP_Filter')){
      /**
    	* Tax CTP Filter Class 
    	* Simple class to add custom taxonomy dropdown to a custom post type admin edit list
    	* @author Ohad Raz <admin@bainternet.info>
    	* @version 0.1
    	*/
    	class Tax_CTP_Filter
    	{
    		/**
    		 * __construct 
    		 * @author Ohad Raz <admin@bainternet.info>
    		 * @since 0.1
    		 * @param array $cpt [description]
    		 */
    		function __construct($cpt = array()){
    			$this->cpt = $cpt;
    			// Adding a Taxonomy Filter to Admin List for a Custom Post Type
    			add_action( 'restrict_manage_posts', array($this,'my_restrict_manage_posts' ));
    		}
    
    		/**
    		 * my_restrict_manage_posts  add the slelect dropdown per taxonomy
    		 * @author Ohad Raz <admin@bainternet.info>
    		 * @since 0.1
    		 * @return void
    		 */
    		public function my_restrict_manage_posts() {
    			// only display these taxonomy filters on desired custom post_type listings
    			global $typenow;
    			$types = array_keys($this->cpt);
    			if (in_array($typenow, $types)) {
    				// create an array of taxonomy slugs you want to filter by - if you want to retrieve all taxonomies, could use get_taxonomies() to build the list
    				$filters = $this->cpt[$typenow];
    				foreach ($filters as $tax_slug) {
    					// retrieve the taxonomy object
    					$tax_obj = get_taxonomy($tax_slug);
    					$tax_name = $tax_obj->labels->name;
    
    					// output html for taxonomy dropdown filter
    					echo "<select name='".strtolower($tax_slug)."' id='".strtolower($tax_slug)."' class='postform'>";
    					echo "<option value=''>Show All $tax_name</option>";
    					$this->generate_taxonomy_options($tax_slug,0,0,(isset($_GET[strtolower($tax_slug)])? $_GET[strtolower($tax_slug)] : null));
    					echo "</select>";
    				}
    			}
    		}
    
    		/**
    		 * generate_taxonomy_options generate dropdown
    		 * @author Ohad Raz <admin@bainternet.info>
    		 * @since 0.1
    		 * @param  string  $tax_slug 
    		 * @param  string  $parent   
    		 * @param  integer $level    
    		 * @param  string  $selected 
    		 * @return void            
    		 */
    		public function generate_taxonomy_options($tax_slug, $parent = '', $level = 0,$selected = null) {
    			$args = array('show_empty' => 1);
    			if(!is_null($parent)) {
    				$args = array('parent' => $parent);
    			}
    			$terms = get_terms($tax_slug,$args);
    			$tab='';
    			for($i=0;$i<$level;$i++){
    				$tab.='--';
    			}
    
    			foreach ($terms as $term) {
    				// output each select option line, check against the last $_GET to show the current option selected
    				echo '<option value='. $term->slug, $selected == $term->slug ? ' selected="selected"' : '','>' .$tab. $term->name .' (' . $term->count .')</option>';
    				$this->generate_taxonomy_options($tax_slug, $term->term_id, $level+1,$selected);
    			}
    
    		}
    	}//end class
    }//end if
    
    new Tax_CTP_Filter(array('property' => array('custom_tax','custom_tax_1','custom_tax_2','custom_tax_3')));

    Эти таксы ('custom_tax','custom_tax_1','custom_tax_2','custom_tax_3') появятся в выпадающем списке фильтров в админке. Примениш фильтр, а далее, через быстрое редактирование...

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация