/**
* À chaque enregistrement d'un post type “chaussures” :
* - Exécute le shortcode Winamaz pour récupérer son HTML
* - Vérifie si, dans ce HTML, on trouve au moins un nombre (ex. “€” ou digits)
* - Stocke _has_winamaz_price = 1 si un prix est présent, ou 0 s’il n’y a rien
*/
function rf_capture_winamaz_price_flag( $post_id ) {
// 1. Ne s’applique qu’aux posts “chaussures” (remplacez par le slug de votre CPT)
if ( get_post_type( $post_id ) !== 'chaussures' ) {
return;
}
// 2. On désactive temporairement ce hook pour éviter les boucles infinies
remove_action( 'save_post', 'rf_capture_winamaz_price_flag' );
// 3. On récupère la valeur du méta “ean” (qui est toujours défini, mais Winamaz n’a pas forcément de résultat)
$ean = get_post_meta( $post_id, 'ean', true );
// 4. Si pas d’EAN du tout, on marque tout de suite “0”
if ( empty( $ean ) ) {
update_post_meta( $post_id, '_has_winamaz_price', 0 );
add_action( 'save_post', 'rf_capture_winamaz_price_flag' );
return;
}
// 5. Exécution du shortcode Winamaz pour récupérer le HTML renvoyé (par ex. "
129.99 €
")
$shortcode = '[winamaz ean="' . esc_attr( $ean ) . '" template="simple"]';
$output_html = do_shortcode( $shortcode );
// 6. On enlève les balises HTML et on cherche s’il y a au moins un nombre (ex “129.99” ou “129 €”)
$has_price = 0;
if ( preg_match( '/[0-9]+[.,]?[0-9]*s*(€|EUR)?/', strip_tags( $output_html ) ) ) {
$has_price = 1;
}
// 7. On stocke ce résultat dans le méta _has_winamaz_price (1 ou 0)
update_post_meta( $post_id, '_has_winamaz_price', $has_price );
// 8. On ré-associe le hook pour les prochaines sauvegardes
add_action( 'save_post', 'rf_capture_winamaz_price_flag' );
}
add_action( 'save_post', 'rf_capture_winamaz_price_flag' );
/**
* Fonction “one-shot” : scanne toutes les fiches “chaussures” et appelle notre
* rf_capture_winamaz_price_flag() pour régénérer le méta _has_winamaz_price
* sur chacune. À supprimer une fois exécutée.
*/
function rf_refresh_all_has_price_meta() {
$all_ids = get_posts([
'post_type' => 'chaussures',
'posts_per_page' => -1,
'fields' => 'ids',
]);
foreach ( $all_ids as $pid ) {
// Appel “à la main” de la même fonction qu’au save_post
rf_capture_winamaz_price_flag( $pid );
}
}
// On exécute une fois à l’init : dès que vous rechargez n’importe quel écran WordPress, ce code tourne.
add_action( 'init', 'rf_refresh_all_has_price_meta' );
forme anatomique - Running FranceSkip to content
Tag: forme anatomique
New search
If you are not happy with the below results, you may try another search.
Please select listing to show.
Run In France vous offre son programme de renforcement musculaire avec 14 exercices !