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

/*** 前の投稿へのリンクを表示するショートコード ***/
function haup_previous_post_link_shortcode() {
// 現在の投稿IDを取得
	$current_post_id = get_the_ID();
// 現在の投稿の最終更新日を取得
	$current_post_modified_date = get_the_modified_date('Y-m-d H:i:s', $current_post_id);
// 現在の投稿に割り当てられているカテゴリーを取得
	$categories = get_the_category($current_post_id);
	$category_ids = array();

// カテゴリーIDのみを抽出
	if (!empty($categories)) {
		foreach ($categories as $category) {
			$category_ids[] = $category->term_id;
		}
	}

	//投稿タイプを「投稿」に指定し、haup_is_single_filterで追加できるようにする
	$posttypes = 'post';
	$posttypes = apply_filters('haup_next_prev_link_posttype_filter',$posttypes);
	//20250902 explodeだけでは空文字などがあった場合に不具合が出る可能性があるので修正
	$post_types_array = array_map('trim', explode(',', $posttypes));
	$post_types_array = array_filter($post_types_array);
	//$post_types_array = explode(',', $posttypes);//「,」で投稿タイプを分割


// カスタムクエリの引数
	$args = array(
		'post_type' => $post_types_array,
		'post_status' => 'publish',
		'posts_per_page' => 1,
		'orderby' => 'modified',
		'order' => 'DESC',
		'category__in' => $category_ids, // 同一カテゴリー
		'date_query' => array(
			array(
				'before' => $current_post_modified_date,
				'inclusive' => false,
			),
		),
		// phpcs:ignore WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_post__not_in
		'post__not_in' => array($current_post_id), // 現在の投稿を除外
	);

// クエリ実行
	$post_query = new WP_Query($args);

// 結果の確認
	if ($post_query->have_posts()) {
		$post_query->the_post();
		$post_url = get_permalink();
		$post_title = get_the_title();
		$post_thumb = get_the_post_thumbnail( get_the_ID(), array( 75, 75 ));

		wp_reset_postdata();

		$output = '';
		
		$output .= '<div class="haup-prev-next-post">';
		$output .= '<a href="'.$post_url.'" aria-label="next-post"></a>';
		//$output .= '<div class="haup-prev-next-post-mark"> < </div>';
		$output .= '<div class="haup-prev-next-post-mark"><span class="icon-hauicon-arrow24"></span></div>';
		$output .= '<div class="haup-prev-next-post-img">'.$post_thumb.'</div>';
		$output .= '<div class="haup-prev-next-post-content">';
		$output .= $post_title;
		$output .= '</div>';
		$output .= '</div>';

		return $output;
    
	} else {
		return '';
	}
}
add_shortcode('ha-prev-post', 'haup_previous_post_link_shortcode');

/*** 次の投稿へのリンクを表示するショートコード ***/
function haup_next_post_link_shortcode() {
// 現在の投稿IDを取得
	$current_post_id = get_the_ID();
// 現在の投稿の最終更新日を取得
	$current_post_modified_date = get_the_modified_date('Y-m-d H:i:s', $current_post_id);
// 現在の投稿に割り当てられているカテゴリーを取得
	$categories = get_the_category($current_post_id);
	$category_ids = array();

// カテゴリーIDのみを抽出
	if (!empty($categories)) {
		foreach ($categories as $category) {
			$category_ids[] = $category->term_id;
		}
	}

	//投稿タイプを「投稿」に指定し、haup_is_single_filterで追加できるようにする
	$posttypes = 'post';
	$posttypes = apply_filters('haup_next_prev_link_posttype_filter',$posttypes);
	//20250902 explodeだけでは空文字などがあった場合に不具合が出る可能性があるので修正
	$post_types_array = array_map('trim', explode(',', $posttypes));
	$post_types_array = array_filter($post_types_array);
	//$post_types_array = explode(',', $posttypes);//「,」で投稿タイプを分割


// カスタムクエリの引数
	$args = array(
		'post_type' => $post_types_array,
		'post_status' => 'publish',
		'posts_per_page' => 1,
		'orderby' => 'modified',
		'order' => 'ASC',
		'category__in' => $category_ids,
		'date_query' => array(
			array(
				'after' => $current_post_modified_date,
				'inclusive' => false,
			),
		),
		// phpcs:ignore WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_post__not_in
		'post__not_in' => array($current_post_id), // 現在の投稿を除外
	);

// クエリ実行
	$post_query = new WP_Query($args);

// 結果の確認
	if ($post_query->have_posts()) {
		$post_query->the_post();
		$post_url = get_permalink();
		$post_title = get_the_title();
 		$post_thumb = get_the_post_thumbnail( get_the_ID(), array( 75, 75 ));

		wp_reset_postdata();

		$output = '';
		
		$output .= '<div class="haup-prev-next-post next">';
		$output .= '<a href="'.$post_url.'" aria-label="next-post"></a>';
		$output .= '<div class="haup-prev-next-post-content">';
		$output .= $post_title;
		$output .= '</div>';
		$output .= '<div class="haup-prev-next-post-img">'.$post_thumb.'</div>';
		//$output .= '<div class="haup-prev-next-post-mark"> > </div>';
		$output .= '<div class="haup-prev-next-post-mark"><span class="icon-hauicon-arrow22"></span></div>';
		$output .= '</div>';

		return $output;
    
	} else {
		return '';
	}
}
add_shortcode('ha-next-post', 'haup_next_post_link_shortcode');