Intereting Posts

Таблица списков списков фильтров

Мой post_type является 'part' . Я создал пользовательское поле 'Images' таким образом (просто добавили новые столбцы в массив):

 add_filter( 'manage_edit-part_columns', 'my_columns_filter' ); function my_columns_filter( $columns ) { unset( $columns['comments'] ); $column_attach = array( 'images' => 'Images' ); $column_content = array( 'content' => 'Content' ); $columns = array_slice( $columns, 0, 5, true ) + $column_attach + array_slice( $columns, 5, NULL, true ); $columns = array_slice( $columns, 0, 6, true ) + $column_content + array_slice( $columns, 6, NULL, true ); return $columns; } 

Добавлен контент для них (проверьте, есть ли какие-либо изображения):

 add_action( 'manage_part_posts_custom_column', 'my_column_action' ); function my_column_action( $column ) { global $post; if ( $column === 'images' ){ $images = get_attached_media( 'image', $post->ID ); if ( count( $images ) > 0 ){ echo 'YES'; } else { echo 'NO'; } } } 

Созданная избранная запись:

 add_action( 'restrict_manage_posts', 'img_part_filtering' ); function img_part_filtering() { global $typenow ; if ( $typenow == 'part' ) { $selected_now = ''; if ( isset( $_GET['filter-img'] ) ) { $selected_now = esc_attr( $_GET['filter-img'] ); } echo '<select name="filter-img" id="filter-img">'; echo '<option value="" >' . __( 'Images', 'filter-img' ) . '</option>'; echo '<option value="yes" ' . selected( $selected_now, 'yes', false ) . '>' . __( 'YES', 'filter-img' ) . '</option>'; echo '<option value="no" ' . selected( $selected_now, 'no', false ) . '>' . __( 'NO', 'filter-img' ) . '</option>'; echo '</select>'; } } 

Как я могу отфильтровать список сообщений администратора по столбцу 'images' ? Я пытался:

 add_filter( 'parse_query', 'img_query_filtering' ); function img_query_filtering( $query ) { global $pagenow; $qv = &$query->query_vars; if ( $pagenow == 'edit.php' && isset( $q_vars['post_type'] ) && $q_vars['post_type'] == 'part' && isset( $q_vars['filter-img'] ) ) { if ( ! isset( $qv['meta_query'] ) ) { $qv['meta_query'] = array(); } if ( ! empty( $_GET['filter-img'] ) ) { if ('yes' == $_GET['filter-img'] ) { $qv['meta_query'][] = array( 'field' => 'images', 'value' => 'YES', 'compare' => '=', 'type' => 'CHAR' ); } if ('no' == $_GET['filter-img'] ) { $qv['meta_query'][] = array( 'field' => 'images', 'value' => 'NO', 'compare' => '=', 'type' => 'CHAR' ); } } } } 

Я также пытался просто проверить его работоспособность в моих целях, но он не работает:

 function posts_where( $where ) { if ( is_admin() ) { global $pagenow; if ( $pagenow == 'edit.php' && isset( $q_vars['post_type'] ) && $q_vars['post_type'] == 'part' && isset( $q_vars['filter-img'] ) ) { $where .= ' AND 1=0'; } } return $where; } 

Есть ли способ добавить такой столбец и фильтровать его?

Solutions Collecting From Web of "Таблица списков списков фильтров"