在 WooCommerce 单品页面上根据时间范围显示 ACF 字段

Show ACF field based on time range on WooCommerce single product page

我正在尝试在 WooCommerce 单个产品页面上显示文本 ACF。基于时间范围。

这是我目前使用的代码:

function time_promo() {
    // Set the correct time zone  (http://php.net/manual/en/timezones.php)
    date_default_timezone_set( 'Europe/Brussels' );
    
    // Set the start time and the end time
    $start_time = mktime( 06, 00, 00, date( 'm' ), date( 'd' ), date( 'y' ) );
    $end_time   = mktime( 15, 00, 00, date( 'm' ), date( 'd' ), date( 'y' ) );
    $time_now   = strtotime( 'now' );
    
    // Check time
    if ($time_now >= $start_time && $time_now <= $end_time){
    
        // Show Field
        echo '<p id="promo">'.get_field('promo').'</p>';
    }
}
add_action( 'woocommerce_single_product_summary', 'time_promo' );

然而,这并没有在单品页面上显示任何内容。谁能告诉我哪里错了?

这会起作用,如果不起作用,您会看到原因。

根据您的需要进行调整:

function action_woocommerce_single_product_summary() {
    // Set the correct time zone  (http://php.net/manual/en/timezones.php)
    date_default_timezone_set( 'Europe/Brussels' );

    // Set the start time and the end time
    $start_time = mktime( 06, 00, 00, date( 'm' ), date( 'd' ), date( 'y' ) );
    $end_time   = mktime( 21, 00, 00, date( 'm' ), date( 'd' ), date( 'y' ) );
    $time_now   = strtotime( 'now' );

    // Check time
    if ( $time_now >= $start_time && $time_now <= $end_time ) {
        
        // ACF plugin is active
        if ( class_exists('ACF') ) {
            // Get field
            $promo = get_field('promo');
        
            // Check if value exists
            if ( $promo ) {
                // Show Field
                echo '<p id="promo">' . $promo . '</p>';    
            } else {
                echo '<p id="promo">ACF field not found!</p>';              
            }
        } else {
            echo '<p id="promo">ACF does not exist!</p>';               
        }
    } else {
        echo '<p id="promo">The time conditions are not met!</p>';  
    }
}
add_action( 'woocommerce_single_product_summary', 'action_woocommerce_single_product_summary', 11 );