Есть плагин который добавляет поле в админ панели (количество символов), но как сделать его сортируемым? чтоб можно было от большего к меньшему сортировать.
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');
}
Но сортировка не работает