theme/functions.php

162 lines
5.5 KiB
PHP

<?php
/*******************************************
****** Inclusions de scripts et styles ****
*******************************************/
/**
** activation theme parent
**/
add_action( 'wp_enqueue_scripts', 'enqueue_style_parent' );
function enqueue_style_parent() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
/**
** Ajout des scripts et styles tardifs
**/
add_action('wp_enqueue_scripts', 'enqueue_scripts_child', 20);
function enqueue_scripts_child() {
wp_register_script('customJS', get_stylesheet_directory_uri() . '/custom.js', array('jquery'),'1.1', true);
wp_enqueue_script('customJS');
wp_enqueue_style('dashicons');
//wp_enqueue_style( 'responsive-child', get_stylesheet_directory_uri() . '/path/to/file.css' );
}
/**
* changement du terme "articles" par "mesures"
*/
add_action( 'init', 'cp_change_post_object' );
function cp_change_post_object() {
$get_post_type = get_post_type_object('post');
$labels = $get_post_type->labels;
$labels->name = 'Mesures';
$labels->singular_name = 'Mesure';
$labels->add_new = 'Ajouter une mesure';
$labels->add_new_item = 'Ajouter une mesure';
$labels->edit_item = 'Modifier la mesure';
$labels->new_item = 'Nouvelle mesure';
$labels->view_item = 'Voir la mesure';
$labels->search_items = 'Chercher dans les mesures';
$labels->not_found = 'Aucune mesure trouvée';
$labels->not_found_in_trash = 'Aucune mesure dans la corbeille';
$labels->all_items = 'Toutes les mesures';
$labels->menu_name = 'Mesures';
$labels->name_admin_bar = 'Mesure';
}
/**
* Suppression de la metabox catégories
*/
function ccc_remove_metaboxes() {
remove_meta_box( 'categorydiv', 'post', 'normal' );
}
add_action( 'admin_menu', 'ccc_remove_metaboxes' );
/**
* Shortcode affichant la liste des mesures
*/
function generate_home_posts_list() {
// On récupère la liste des mesures par date de MaJ décroissante
$measures = get_posts([ 'post_type' => 'post',
'orderby' => 'modified',
'order' => 'DESC',
'numberposts' => -1
]);
// Conteneur pour les filtres
$html = "<div class='filters-container'></div>";
// input pour la recherche
$html .= "<div class='search-container'><input id='measure-search' type='text' name='filters-search' placeholder='Rechercher'><button type='reset' id='measure-search-reset'><span class='dashicons dashicons-no-alt'></span></button> </div>";
foreach ($measures as $measure) {
$status = get_the_category($measure->ID)[0];
$color = get_field('couleur', 'category_'.$status->term_id);
$link = get_field('proposition-url', $measure->ID);
$date = get_the_modified_date("d/m/Y à H:i", $measure);
$html .= "<article class='measure-wrapper measure-".$status->slug."' style='border-color: $color'>";
$html .= "<h3 class='measure-title' style='background-color: $color'>". $measure->post_title ."</h3>";
$html .= "<div class='measure-content'>";
$html .= "<p class='measure-meta' style='background-color: $color'>". $measure->post_excerpt ." <a href='$link' target='_blank' class='external'>Lire la mesure</a></p>";
$html .= "<div class='status-desc' style='background-color: $color'><p>". $status->description . "</p></div>";
$html .= "<div class='content'>" . $measure->post_content . "</div>";
$html .= "<p class='measure-meta' style='background-color: $color'>Mise à jour le " . $date . "<br /> ";
$html .= "</div></article>";
$html .= "<hr />";
}
return $html;
}
add_shortcode('mesures', 'generate_home_posts_list');
/**
* Shortcode affichant le graphique de suivi des statuts
*/
function generate_home_status_graph() {
// Total des articles
$total = wp_count_posts('post')->publish;
// Ensuite, pour chaque catégorie donnée, on va :
// récupérer le nombre de posts de cette cat
// récupérer la couleur associée
// calculer le pourcentage sur le total de mesures
// créer un bloc html avec l data correspondante
$cats = ["validated", "partially-validated", "discussed", "danger", "rejected", "undiscussed"];
$obj_total = 0;
$html = "";
foreach ($cats as $cat) {
$cat = get_category_by_slug($cat);
$color = get_field('couleur', "category_" . $cat->term_id);
$percent = $cat->count * 100 / $total;
$html .= "<div class='home-graph-item'>";
$html .= "<h3 class='status-title' status='". $cat->slug ."'>" . $cat->name . "</h3>";
$html .= "<div class='progress-bar-wrapper'>";
$html .= "<div class='progress-bar' style='background-color: $color; width: $percent%; '></div>";
$html .= "<div class='progress-bar bottom'></div>";
$html .= "</div>";
$html .= "<p>" . $cat->count . "</p>";
$html .= "</div>";
if (in_array($cat->slug, ['validated', 'partially-validated'])) {
$obj_total += $cat->count;
}
}
$total_percent = $obj_total * 100 / $total;
$html .= "<div class='home-graph-item obj-total'>";
$html .= "<h3> Objectif </h3>";
$html .= "<div class='progress-bar-wrapper'>";
$html .= "<div class='progress-bar' style='width: $total_percent%; background-color: #97C5E0; '></div>";
$html .= "<div class='progress-bar bottom'></div>";
$html .= "</div>";
$html .= "<p> $obj_total / $total </p>";
$html .= "</div>";
return $html;
}
add_shortcode('graph_mesures', 'generate_home_status_graph');