<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

/***** access-count.phpメインプログラムの呼び出し *****/
require_once (__DIR__ .'/access-count.php');

/***** 一覧へカラムを作成する *****/
/* 列の定義 */
function haup_manage_posts_views_columns($columns) {
	if(haup_is_single()){
		$columns['post_views_count'] = __('View Count','hima-art-utility');
	}

	return $columns;
}
add_filter( 'manage_posts_columns', 'haup_manage_posts_views_columns' );

function haup_manage_pages_views_columns($columns) {
	$columns['post_views_count'] = __('View Count','hima-art-utility');

	return $columns;
}
add_filter( 'manage_pages_columns', 'haup_manage_pages_views_columns' );

/***** データの呼び出し *****/
function haup_add_posts_view_column($column_name, $post_id) {
	/*View数呼び出し*/
	if ( $column_name == 'post_views_count' ) {
		$viewtitle = get_post_meta($post_id, 'post_views_count', true);
	}

	if ( isset($viewtitle) && $viewtitle ) {
		echo esc_attr($viewtitle);
	} else {
		echo '';
	}
}
add_action( 'manage_posts_custom_column', 'haup_add_posts_view_column', 10, 2 );
add_action( 'manage_pages_custom_column', 'haup_add_posts_view_column', 10, 2 );

/***** 管理画面の一覧へVIEW数を表示 *****/
/*** View数のカスタムフィールドを数字化 ***/
function haup_viewsuu_column_orderby_custom( $vars ) {
	if ( isset( $vars['orderby'] ) && 'post_views_count' == $vars['orderby'] ) {
		$vars = array_merge( $vars, array(
			// phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
			'meta_key' => 'post_views_count',
			'orderby' => 'meta_value_num',
		));
	}
	return $vars;
}
add_filter( 'request', 'haup_viewsuu_column_orderby_custom' );

/*** View数を並び替え可能にする ***/
/* コールバック関数 */
function haup_viewsuu_column_register_sortable( $sortable_column ) {
	$sortable_column['post_views_count'] = 'post_views_count';
	return $sortable_column;
}

/* 処理 */
function haup_postvews_column_sortable_anyposttype(){

//コールバック関数をセット
	$function = 'haup_viewsuu_column_register_sortable';

//投稿や固定ページと同じ機能を持つ投稿タイプを$post_typesへ代入
	$post_types = get_post_types_by_support(array('title', 'editor', 'thumbnail'));

//$post_typeで公開になっていない投稿タイプを除外して$post_keyに代入し直す
	foreach ($post_types as $post_key => $post_type) {
		if (!is_post_type_viewable($post_type)) {
			unset($post_types[$post_type]);
		}
	}

//$post_keyに合致する投稿タイプに対してコールバック関数の列を並び替え可能にする
	foreach ($post_types as $post_key) {
		add_filter( 'manage_edit-' . $post_key . '_sortable_columns', $function );
	}
}
add_action( 'admin_menu' , 'haup_postvews_column_sortable_anyposttype' );

/***** 管理画面上のスタイル *****/
function haup_admin_page_view_column_style_init(){
$custom_css_pre = "
/* HAUP Page View Column Width */
.fixed .column-post_views_count {width: 10%;}
td.post_views_count.column-post_views_count {
	text-align: right;
	padding-right: 2rem;
}
";

	//スタイルコードを改行なしで整形する
	$custom_css = str_replace(PHP_EOL, '', $custom_css_pre);

	wp_add_inline_style('haup-only-admin-style', $custom_css );

}
add_action('admin_enqueue_scripts','haup_admin_page_view_column_style_init');

/***** ショートコードでVIEW数を表示(単一ページのみ) *****/
function haup_view_count_sc_init(){
	$view_content = get_post_meta(get_the_ID(), 'post_views_count', true);
	if ( current_user_can('manage_options')){
		$view_title = __('Cumulative number of accesses:','hima-art-utility');
		return $view_title.$view_content;
	}
}
add_shortcode('ha-views','haup_view_count_sc_init');


