PLUGİN'İN ÜRÜNDE AKTİF EDİLDİP EDİLMEDİĞİNİ GÖSTEREN KOD

function alg_wc_crdfnd_count_crowdfunding_products( $post_id ) {
        $args = array(
            'post_type'      => 'product',
            'post_status'    => array( 'any', 'trash' ),
            'posts_per_page' => 3,
            'meta_key'       => '_alg_crowdfunding_enabled',
            'meta_value'     => 'yes',
            'post__not_in'   => array( $post_id ),
            'fields'         => 'ids',
        );
        $loop = new WP_Query( $args );
        return $loop->found_posts;
    }
}

BTC ÖDEME FONKSİYON KODLARI

public function _update_order_status( $order, $timeline ) {
		$prev_status = $order->get_meta( '_coinbase_status' );

		$last_update = end( $timeline );
		$status      = $last_update['status'];
		if ( $status !== $prev_status ) {
			$order->update_meta_data( '_coinbase_status', $status );

			if ( 'EXPIRED' === $status && 'pending' == $order->get_status() ) {
				$order->update_status( 'cancelled', __( 'Coinbase payment expired.', 'coinbase' ) );
			} elseif ( 'CANCELED' === $status ) {
				$order->update_status( 'cancelled', __( 'Coinbase payment cancelled.', 'coinbase' ) );
			} elseif ( 'UNRESOLVED' === $status ) {
			    	if ($last_update['context'] === 'OVERPAID') {
                    			$order->update_status( 'processing', __( 'Coinbase payment was successfully processed.', 'coinbase' ) );
                    			$order->payment_complete();
                		} else {
                    			// translators: Coinbase error status for "unresolved" payment. Includes error status.
                    			$order->update_status( 'failed', sprintf( __( 'Coinbase payment unresolved, reason: %s.', 'coinbase' ), $last_update['context'] ) );
                		}
			} elseif ( 'PENDING' === $status ) {
				$order->update_status( 'blockchainpending', __( 'Coinbase payment detected, but awaiting blockchain confirmation.', 'coinbase' ) );
			} elseif ( 'RESOLVED' === $status ) {
				// We don't know the resolution, so don't change order status.
				$order->add_order_note( __( 'Coinbase payment marked as resolved.', 'coinbase' ) );
            		} elseif ( 'COMPLETED' === $status ) {
                		$order->update_status( 'processing', __( 'Coinbase payment was successfully processed.', 'coinbase' ) );
                		$order->payment_complete();
            		}
		}

		// Archive if in a resolved state and idle more than timeout.
		if ( in_array( $status, array( 'EXPIRED', 'COMPLETED', 'RESOLVED' ), true ) &&
			$order->get_date_modified() < $this->timeout ) {
			self::log( 'Archiving order: ' . $order->get_order_number() );
			$order->update_meta_data( '_coinbase_archived', true );
		}
	}

HEDEFE KALAN TUTARI SAYAN FONKSIYON

function alg_product_crowdfunding_goal_remaining( $atts ) {
        if ( empty( $atts ) ) {
            $atts = array();
        }
        $product_id = isset( $atts['product_id'] ) ? $atts['product_id'] : get_the_ID();
        if ( ! $product_id ) {
            return '';
        }
        if ( isset( $atts['type'] ) && 'percent' === $atts['type'] ) {
            $atts['total_value'] = get_post_meta( $product_id, '_' . 'alg_crowdfunding_goal_sum', true );
        } elseif ( ! isset( $atts['type'] ) ) {
            $atts['type'] = 'price';
        }
        return $this->output_shortcode( floatval( get_post_meta( $product_id, '_' . 'alg_crowdfunding_goal_sum', true ) ) - alg_wc_crdfnd_get_product_orders_data( 'orders_sum', $atts ), $atts );
    }
	
////////////BENİM İSTEDİĞİM///////////////////


1 - Plugin'in ürün üzerinde aktif edilip edilmediğini kontrol et.
2 - if remaining >=0 ise ödeme alındığında satın alan kişinin ödeme durumunu HEDEFE ULAŞILMASI BEKLENİYOR yap
3 - remaining <=0 olduğu zaman ödeme yapanların ödeme durumunu tamamlandı yap ve dosyaya erişim ver. (ödeme durumu tamamlandı olduğu zaman otomatik olarak dosyaya erişim sağlıyorlar ekstra birşey yapılması gerekmiyor sanırım.