fixed error when retrievieng acf dates with format

This commit is contained in:
asus
2024-04-24 19:03:31 +02:00
parent 687ac0cf4e
commit a357c64fbc
5 changed files with 32 additions and 22 deletions

View File

@@ -4,7 +4,7 @@ Plugin Name: hggg_cipf
Plugin URI:
Description:
Author: hugogogo
Version: 0.5.11
Version: 0.5.11.2
Author URI:
*/

View File

@@ -222,10 +222,4 @@ EXPLICATIONS CLASS CSS
</li>
</ul>
<h2></h2>
<ul>
<li><strong> : </strong></li>
</ul>
</section>

View File

@@ -21,13 +21,11 @@ function get_date_CIPF($acf_date, $acf_id) {
/*
* get acf date field
* 3d parameter is false to not format the date and get it as 'Ymd'
*
*/
$current_date_object = get_field_object($acf_date['_name'], $acf_id);
if ($current_date_object === false) {
return false;
}
else if (empty($current_date_object['value'])) {
$current_date_string = get_field($acf_date['_name'], $acf_id, false);
if (empty($current_date_string)) {
return false;
}
@@ -35,12 +33,10 @@ function get_date_CIPF($acf_date, $acf_id) {
* create date object from acf date
*
*/
$current_date_string = $current_date_object['value'];
$current_format_field = $current_date_object['return_format'];
// compare 2 dates : https://stackoverflow.com/q/8722806/9497573
// also I dont use strtotime to compare 2 ints,
// because i don't know if it will fail one day (2000y bug style)
$current_date = date_create_immutable_from_format($current_format_field, $current_date_string);
$current_date = date_create_immutable_from_format('Ymd', $current_date_string);
if ($current_date === false) {
return false;
}
@@ -225,8 +221,9 @@ function is_prof_account_deletion_date_exceeded_CIPF($user_id = null) {
function get_offer_date_expiration_CIPF($offer_number, $page_id) {
Plgntls::debug_infos();
$offer_expiration = get_post_meta($page_id, 'fin_offre_'.$offer_number);
$date_expiration = date_create_immutable_from_format('Ymd', $offer_expiration[0]);
// last parameter is false to not format the date, and get the 'Ymd' format
$offer_expiration = get_field('fin_offre_'.$offer_number, $page_id, false);
$date_expiration = date_create_immutable_from_format('Ymd', $offer_expiration);
return $date_expiration;
}
function is_offer_date_exceeded_CIPF($offer_number, $page_id) {

View File

@@ -15,7 +15,7 @@ if (!defined('ABSPATH')) {
function handle_partner_offers_expire_CIPF($page_id) {
Plgntls::debug_infos();
$post = get_post($page_id);
//$post = get_post($page_id);
$i = 1;
while ($i <= 3) {
@@ -30,8 +30,8 @@ $post = get_post($page_id);
continue;
}
$offer_title = get_field_init_CIPF('offre_'.$i.'_titre', $page_id);
error_log("- post: ".$post->post_title." - titre offre: ".$offer_title);
//$offer_title = get_field_init_CIPF('offre_'.$i.'_titre', $page_id);
//error_log("- post: ".$post->post_title." - titre offre: ".$offer_title);
handle_offer_will_expire_CIPF($i, $page_id);
handle_offer_is_expired_CIPF($i, $page_id);

View File

@@ -40,8 +40,22 @@ if (!defined('ABSPATH')) {
*
* 118 : ../../../../wordpress_docker/volumes/wp_volume/wp-content/plugins/advanced-custom-fields/includes/acf-value-functions.php
*
* we can either use filter 'acf/load_value' or 'acf/pre_load_value'
* - 'acf/pre_load_value' :
* it fires first, and will short-circuit the function to get the value
* it is useful to force the acf_date value to be always the same,
* otherwise acf uses some kind of cach system,
* so the value would be evaluated once then it would always be the same on the page : maybe it's alright ?
* - 'acf/load_value' :
* using this filter, the value is cached, as explained above
* - note : the first argument '$value' is actually a little misleading :
* - in case of the second filter,
* it is indeed tha value that has already been retrieve and that we can override
* - but for the first filter, it is actually 'null',
* and if returned it will let the function go on to try to retrieve the value
*
*/
function try_format_acf_date($value, $post_id, $field) {
function try_get_acf_date($value, $post_id, $field) {
$acf_date_class = Fbpatch::ACF_DATE_CLASS;
if ($field['type'] !== 'date_picker') {
return $value;
@@ -51,13 +65,18 @@ function try_format_acf_date($value, $post_id, $field) {
}
$acf_date = Fbpatch::get_acf_date($post_id, $field['key']);
//error_log("acf_date: " . json_encode($acf_date));
if ($acf_date === false) {
return $value;
}
return $acf_date;
}
add_filter('acf/load_value', __NAMESPACE__.'\try_format_acf_date', 10, 3);
add_filter('acf/load_value', __NAMESPACE__.'\try_get_acf_date', 10, 3);
//add_filter('acf/pre_load_value', __NAMESPACE__.'\try_get_acf_date', 10, 3);