@html_student
Молодой и глупый.

Сортировка для доп поля в админ панели WP?

Есть плагин который добавляет поле в админ панели (количество символов), но как сделать его сортируемым? чтоб можно было от большего к меньшему сортировать.
defined( 'ABSPATH' ) or die( "No script kiddies please!" );

if ( ! class_exists( 'Posts_Character_Count_Admin' ) ) {
	load_plugin_textdomain(
		'posts-character-count-admin',
		false,
		dirname( plugin_basename( __FILE__ ) ) . '/languages/'
	);

	require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'inc/class-posts-character-count.php';
	require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'inc/class-posts-character-count-admin.php';

	add_action( 'plugins_loaded', array( 'Posts_Character_Count_Admin', 'init' ) );
}


class-posts-character-count.php'

<?php

class Posts_Character_Count_Admin {
	public static function init() {
		$plugin = new self();
		add_action( 'admin_init', array( $plugin, 'admin_init' ) );
	}

	public function admin_init() {
		// Only run our customization on the 'edit.php' page in the admin
		add_action( 'load-edit.php', array( $this, 'admin_edit_screens' ) );

	}

	// Add the sortable character count column to all manage posts screens including pages
	public function admin_edit_screens() {
		// Add the character count column to all manage posts screens except pages
		add_filter( 'manage_posts_columns', array( $this, 'admin_edit_columns' ) );
		add_action( 'manage_posts_custom_column', array( $this, 'admin_edit_column_values' ), 10, 2 );

		// Add the character count column to the manage pages screen
		add_filter( 'manage_pages_columns', array( $this, 'admin_edit_columns' ) );
		add_action( 'manage_pages_custom_column', array( $this, 'admin_edit_column_values' ), 10, 2 );
	}

	/* Methods and Filters for the column in the Manage Posts/Pages SubPanel */

	public function admin_edit_columns( $columns ) {
		$columns['count'] = __( 'Количество символов', 'posts-character-count-admin' );

		return $columns;
	}

	public function admin_edit_column_values( $column, $post_id ) {
		global $post;
		if ( 'count' == $column ) {
			$stat = new Posts_Character_Count( $post->post_content );
			echo $stat->count_characters() . ' ' . __( ' символов', 'posts-character-count-admin' );
		}
	}

} // End class



class-posts-character-count-admin.php

<?php

class Posts_Character_Count {
	var $text;
	var $characters = 0;

	public function __construct( $text = null ) {
		if ( $text ) {
			$this->set( $text );
		}
	}

	public function set( $text ) {
		$this->text       = strip_tags( $text );
		$this->characters = - 1;
	}

	public function get() {
		return $this->text;
	}

	public function count_characters() {
		if ( $this->characters != - 1 ) {
			return $this->characters;
		}

		$this->characters = strlen( utf8_decode( $this->text ) );

		return $this->characters;
	}
} // End class



Получается добавляю
add_filter('manage_edit-post_sortable_columns', 'add_views_sortable_column');
function add_views_sortable_column($sortable_columns){
	$sortable_columns['count'] = 'counts_views';
	return $sortable_columns;
}

// изменяем запрос при сортировке колонки
add_filter('pre_get_posts', 'add_column_views_request');
function add_column_views_request( $object ){
	if( $object->get('orderby') != 'counts_views' )
		return;

	$object->set('meta_key', 'count');
	$object->set('orderby', 'meta_value_num');
}


Но сортировка не работает
  • Вопрос задан
  • 14 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы