@charset "UTF-8";

/*!
Theme Name: Cocoon Child
Description: Cocoon専用の子テーマ
Theme URI: https://wp-cocoon.com/
Author: わいひら
Author URI: https://nelog.jp/
Template:   cocoon-master
Version:    1.1.3
*/

/************************************
** 子テーマ用のスタイルを書く
************************************/
/*必要ならばここにコードを書く*/
ul.blog-list { display:flex; flex-wrap:wrap;}
  ul.blog-list li { width:30%; text-align:center;}

/************************************
** レスポンシブデザイン用のメディアクエリ
************************************/
/*1023px以下*/
@media screen and (max-width: 1023px){
  /*必要ならばここにコードを書く*/
}

/*834px以下*/
@media screen and (max-width: 834px){
  /*必要ならばここにコードを書く*/
}

/*480px以下*/
@media screen and (max-width: 480px){
  /*必要ならばここにコードを書く*/
}

/*固定ページの更新日などを非表示*/
.page .date-tags,
.page .author-info{
  display: none;
}

/*トップのタイトルを非表示*/
.home .page .entry-title{
  display: none;
}

/*サイトサブタイトルの色*/
.koikurenai {
	color: #a22041;
}

/*サイトタイトルの色サイズ*/
.titlefz{
	font-size: 80px;
	color: #254e0e;
}

/*項目名の色*/
.midori {
	color: #254e0e;
}
/**
 * 会員系（仮想商品 or サブスク親注文）は支払い完了で自動完了/自動処理へ
 * - processing/completed へ確実に進める
 * - 万一 on-hold に落ちても、支払い済なら自動復帰
 */
if ( ! defined('ABSPATH') ) exit;

/** 全アイテムが仮想商品かを判定 */
function ks_all_items_virtual( $order ){
    foreach ( $order->get_items() as $item ) {
        $product = $item->get_product();
        if ( ! $product || ! $product->is_virtual() ) {
            return false;
        }
    }
    return true;
}

/** サブスク親注文か？ */
function ks_is_subscription_parent_order( $order ){
    return function_exists('wcs_order_contains_subscription')
        && wcs_order_contains_subscription( $order, 'parent' );
}

/**
 * 1) 支払い完了時：ステータスを強制調整
 *    - サブスク親 or 全仮想 → completed
 *    - それ以外 → processing
 */
add_action('woocommerce_payment_complete', function($order_id){
    $order = wc_get_order($order_id);
    if ( ! $order ) return;

    $to_completed  = ks_is_subscription_parent_order($order) || ks_all_items_virtual($order);
    $target_status = $to_completed ? 'completed' : 'processing';

    if ( $order->has_status( array('pending','on-hold','processing') ) ) {
        // すでにcompletedなら何もしない
        if ( ! $order->has_status('completed') ) {
            $order->update_status( $target_status, __('Auto-advance after payment complete','ks') );
        }
    }
}, 20);

/**
 * 2) on-hold に落ちた時の“保険”：
 *    すでに支払いが記録されていれば processing/completed へ戻す
 */
add_action('woocommerce_order_status_on-hold', function( $order_id ){
    $order = wc_get_order($order_id);
    if ( ! $order ) return;

    // 支払い済？（date_paid がセット済）
    if ( $order->is_paid() ) {
        $to_completed  = ks_is_subscription_parent_order($order) || ks_all_items_virtual($order);
        $target_status = $to_completed ? 'completed' : 'processing';
        $order->update_status( $target_status, __('Recovered from on-hold (paid=true)','ks') );
    }
}, 20);

/**
 * 3) 念のため：Wooが payment_complete 後に使う既定の完了ステータスを上書き
 *    （ゲートウェイが適切でも、ここで完成形を保証）
 */
add_filter('woocommerce_payment_complete_order_status', function( $status, $order_id, $order ){
    if ( ! $order ) return $status;
    if ( ks_is_subscription_parent_order($order) || ks_all_items_virtual($order) ) {
        return 'completed';
    }
    return 'processing';
}, 10, 3);
