360 lines
11 KiB
PHP
360 lines
11 KiB
PHP
<?php
|
|
/* functions.php
|
|
*
|
|
* All the function of Quarante-Douze
|
|
*
|
|
*/
|
|
|
|
|
|
/* 0. Excerpt and thumbnail support
|
|
*
|
|
* Ces fonctions ajoutent les fonctionnalités de base du theme,
|
|
* tel que les extraits et les miniatures.
|
|
*/
|
|
|
|
function kspace_post_supports() {
|
|
add_post_type_support( 'post', 'excerpt');
|
|
}
|
|
|
|
add_action( 'init', 'kspace_post_supports' );
|
|
|
|
add_theme_support( 'post-thumbnails' );
|
|
set_post_thumbnail_size( 520, 290, true );
|
|
|
|
//Remove Gutenberg Block Library CSS from loading on the frontend
|
|
function smartwp_remove_wp_block_library_css(){
|
|
wp_dequeue_style( 'wp-block-library' );
|
|
wp_dequeue_style( 'wp-block-library-theme' );
|
|
wp_dequeue_style( 'wc-blocks-style' ); // Remove WooCommerce block CSS
|
|
wp_deregister_style( 'dashicons' );
|
|
add_filter( 'show_admin_bar', '__return_false' );
|
|
}
|
|
add_action( 'wp_enqueue_scripts', 'smartwp_remove_wp_block_library_css', 100 );
|
|
|
|
|
|
/* 1. Niveau support
|
|
*
|
|
* Permet d'afficher les niveaux de post pour les post features
|
|
*/
|
|
|
|
/* 2. Niveau support (for featured posts) */
|
|
|
|
register_taxonomy(
|
|
'niveau',
|
|
'post',
|
|
array(
|
|
'label' => 'Niveau',
|
|
'labels' => array(
|
|
'name' => 'Niveaux',
|
|
'singular_name' => 'Niveaux',
|
|
'all_items' => 'Tous les niveaux',
|
|
'edit_item' => 'Éditer le niveau',
|
|
'view_item' => 'Voir le niveau',
|
|
'update_item' => 'Mettre à jour le niveau',
|
|
'add_new_item' => 'Ajouter un niveau',
|
|
'new_item_name' => 'Nouveau niveau',
|
|
'search_items' => 'Rechercher parmi les niveaux',
|
|
'popular_items' => 'Niveaux les plus utilisés'
|
|
),
|
|
'hierarchical' => false
|
|
)
|
|
);
|
|
|
|
register_taxonomy_for_object_type( 'niveau', 'post' );
|
|
|
|
// 1.1 - Enregistrement de la taxonomy pour le flag
|
|
register_taxonomy(
|
|
'flag',
|
|
'post',
|
|
array(
|
|
'label' => 'Flag',
|
|
'labels' => array(
|
|
'name' => 'Flags',
|
|
'singular_name' => 'Flag',
|
|
'all_items' => 'Tous les flags',
|
|
'edit_item' => 'Éditer le flag',
|
|
'view_item' => 'Voir le flag',
|
|
'update_item' => 'Mettre à jour le flag',
|
|
'add_new_item' => 'Ajouter un flag',
|
|
'new_item_name' => 'Nouveau flag',
|
|
'search_items' => 'Rechercher parmi les flags',
|
|
'popular_items' => 'Flags les plus utilisés'
|
|
),
|
|
'hierarchical' => false
|
|
)
|
|
);
|
|
|
|
register_taxonomy_for_object_type( 'flag', 'post' );
|
|
|
|
// 1.2 - Ajout/Modif du niveau du flag
|
|
function flags_taxonomy_custom_fields($tag) {
|
|
// Check for existing taxonomy meta for the term you're editing
|
|
$t_id = $tag->term_id; // Get the ID of the term you're editing
|
|
$term_meta = get_option( "taxonomy_term_$t_id" ); // Do the check
|
|
?>
|
|
|
|
<tr class="form-field">
|
|
<th scope="row" valign="top">
|
|
<label for="niveau"><?php _e('Niveau du flag'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="text" name="term_meta[niveau]" id="term_meta[niveau]" size="25" style="width:60%;" value="<?php echo $term_meta['niveau'] ? $term_meta['niveau'] : ''; ?>"><br />
|
|
<span class="description"><?php _e('Le niveau du flag (info, warning, danger…)'); ?></span>
|
|
</td>
|
|
</tr>
|
|
|
|
<?php
|
|
}
|
|
|
|
function flags_taxonomy_custom_fields_add( $taxonomy ) {
|
|
// Check for existing taxonomy meta for the term you're editing
|
|
$t_id = $tag->term_id; // Get the ID of the term you're editing
|
|
$term_meta = get_option( "taxonomy_term_$t_id" ); // Do the check
|
|
?>
|
|
|
|
<div class="form-field">
|
|
<label for="term_meta[niveau]"><?php _e('Niveau du flag'); ?></label>
|
|
<input type="text" name="term_meta[niveau]" id="term_meta[niveau]" />
|
|
<p><?php _e('Le niveau du flag (info, warning, danger…)'); ?>.</p>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
|
|
add_action( 'post_tag_edit_form_fields', 'kspace_edit_term_fields', 10, 2 );
|
|
|
|
// 1.3 - Sauvegarde du niveau du flag
|
|
function save_taxonomy_custom_fields( $term_id ) {
|
|
if ( isset( $_POST['term_meta'] ) ) {
|
|
$t_id = $term_id;
|
|
$term_meta = get_option( "taxonomy_term_$t_id" );
|
|
$cat_keys = array_keys( $_POST['term_meta'] );
|
|
foreach ( $cat_keys as $key ){
|
|
if ( isset( $_POST['term_meta'][$key] ) ){
|
|
$term_meta[$key] = $_POST['term_meta'][$key];
|
|
}
|
|
}
|
|
//save the option array
|
|
update_option( "taxonomy_term_$t_id", $term_meta );
|
|
}
|
|
}
|
|
|
|
// Ajout des fields
|
|
add_action( 'flag_edit_form_fields', 'flags_taxonomy_custom_fields', 10, 2 );
|
|
add_action( 'flag_add_form_fields', 'flags_taxonomy_custom_fields_add' );
|
|
add_action( 'created_flag', 'save_taxonomy_custom_fields' );
|
|
add_action( 'edited_flag', 'save_taxonomy_custom_fields', 10, 2 );
|
|
|
|
|
|
function kspace_cat_breadcrumb_nav($categoryName, $icon) {
|
|
?>
|
|
<nav aria-label="breadcrumb">
|
|
<ol class="breadcrumb">
|
|
<li class="breadcrumb-item"><a href="<?php echo site_url(); ?>">Quarante-Douze</a>
|
|
</li><li class="breadcrumb-item" aria-current="page">
|
|
<span class="active"><i class="icon-<?php echo $icon; ?>" aria-hidden="true"></i> <?php echo $categoryName; ?></span>
|
|
</li>
|
|
</ol>
|
|
</nav>
|
|
<?php
|
|
}
|
|
|
|
function kspace_cat_breadcrumb($categoryName, $icon) {
|
|
?>
|
|
<div class="flex-that d-none d-flex-sm">
|
|
<?php kspace_cat_breadcrumb_nav($categoryName, $icon); ?>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
function kspace_cat_breadcrumb_with_rss($categoryName, $icon, $categoryType, $rssLink) {
|
|
?>
|
|
<div class="flex-that d-none d-flex-sm">
|
|
<?php kspace_cat_breadcrumb_nav($categoryName, $icon); ?>
|
|
<div class="rss">
|
|
<a href="<?php echo $rssLink; ?>" class="btn btn-warning d-block m-0" /><i class="icon-rss" aria-hidden="true"></i><span class="sr-only">Flux RSS de <?php echo $categoryType; ?></span></a>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
/* 3. Plus d'info sur les tags
|
|
*
|
|
* Permet d'afficher un lien vers plus d'informations.
|
|
* Le liens est gardé comme un champ supplémentaire dans les tags.
|
|
*
|
|
*/
|
|
|
|
add_action( 'post_tag_add_form_fields', 'kspace_add_term_fields' );
|
|
|
|
function kspace_add_term_fields( $taxonomy ) {
|
|
echo '<div class="form-field">
|
|
<label for="plus-dinfo">Plus d\'Info</label>
|
|
<input type="text" name="plus-dinfo" id="plus-dinfo" />
|
|
<p>Une URL permettant d\'obtenir plus d\'information sur le tag.</p>
|
|
</div>';
|
|
}
|
|
|
|
add_action( 'post_tag_edit_form_fields', 'kspace_edit_term_fields', 10, 2 );
|
|
|
|
function kspace_edit_term_fields( $term, $taxonomy ) {
|
|
|
|
$value = get_term_meta( $term->term_id, 'plus-dinfo', true );
|
|
|
|
echo '<tr class="form-field">
|
|
<th>
|
|
<label for="plus-dinfo">Plus d\'Info</label>
|
|
</th>
|
|
<td>
|
|
<input name="plus-dinfo" id="plus-dinfo" type="text" value="' . esc_attr( $value ) .'" />
|
|
<p class="description">Une URL permettant d\'obtenir plus d\'information sur le tag.</p>
|
|
</td>
|
|
</tr>';
|
|
}
|
|
|
|
add_action( 'created_post_tag', 'kspace_save_term_fields' );
|
|
add_action( 'edited_post_tag', 'kspace_save_term_fields' );
|
|
|
|
function kspace_save_term_fields( $term_id ) {
|
|
|
|
update_term_meta(
|
|
$term_id,
|
|
'plus-dinfo',
|
|
sanitize_text_field( $_POST[ 'plus-dinfo' ] )
|
|
);
|
|
|
|
}
|
|
|
|
/* 3. Info supplémentaire sur profil utilisateur
|
|
*
|
|
* Permet d'afficher sous forme de chaine de caractères des infos supplémentaires qui seront
|
|
* transformé en un tableau..
|
|
*
|
|
*/
|
|
|
|
add_action( 'show_user_profile', 'kspace_show_extra_profile_fields' );
|
|
add_action( 'edit_user_profile', 'kspace_show_extra_profile_fields' );
|
|
|
|
function kspace_show_extra_profile_fields( $user ) {
|
|
$year = get_the_author_meta( 'infodata', $user->ID );
|
|
?>
|
|
<h3><?php esc_html_e( 'More Info', 'kspace' ); ?></h3>
|
|
|
|
<table class="form-table">
|
|
<tr>
|
|
<th><label for="infodata"><?php esc_html_e( 'infodata', 'kspace' ); ?></label></th>
|
|
<td>
|
|
<input type="input"
|
|
id="infodata"
|
|
name="infodata"
|
|
value="<?php echo esc_attr( $year ); ?>"
|
|
class="regular-text"
|
|
/>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<?php
|
|
}
|
|
|
|
add_action( 'personal_options_update', 'kspace_update_profile_fields' );
|
|
add_action( 'edit_user_profile_update', 'kspace_update_profile_fields' );
|
|
|
|
function kspace_update_profile_fields( $user_id ) {
|
|
if ( ! current_user_can( 'edit_user', $user_id ) ) {
|
|
return false;
|
|
}
|
|
|
|
update_user_meta( $user_id, 'infodata', $_POST['infodata'] );
|
|
}
|
|
|
|
/* 4. Romans
|
|
*
|
|
* Permet de catégoriser des chapitres ensemble, via une catégorie spécifiques.
|
|
*
|
|
*/
|
|
|
|
register_taxonomy('roman', 'post',
|
|
array(
|
|
'label' => 'Roman',
|
|
'labels' => array(
|
|
'name' => 'Romans',
|
|
'singular_name' => 'Roman',
|
|
'all_items' => 'Tous les romans',
|
|
'edit_item' => 'Éditer le roman',
|
|
'view_item' => 'Voir le roman',
|
|
'update_item' => 'Mettre à jour le roman',
|
|
'add_new_item' => 'Ajouter un roman',
|
|
'new_item_name' => 'Nouveau roman',
|
|
'search_items' => 'Rechercher parmi les romans',
|
|
'popular_items' => 'Romans les plus utilisés'),
|
|
'rewrite' => array('slug' => 'roman'),
|
|
'hierarchical' => false,
|
|
'public' => true,
|
|
'hierarchical' => true,
|
|
'show_in_nav_menus' => true,
|
|
'has_archive' => true,
|
|
)
|
|
);
|
|
|
|
register_taxonomy_for_object_type( 'roman', 'post' );
|
|
|
|
// 1.2 - Ajout/Modif du niveau du flag
|
|
function romans_taxonomy_custom_fields($tag) {
|
|
// Check for existing taxonomy meta for the term you're editing
|
|
$t_id = $tag->term_id; // Get the ID of the term you're editing
|
|
$term_meta = get_option( "taxonomy_term_$t_id" ); // Do the check
|
|
?>
|
|
|
|
<tr class="form-field">
|
|
<th scope="row" valign="top">
|
|
<label for="niveau"><?php _e('Couverture du roman'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="text" name="term_meta[cover]" id="term_meta[cover]" size="25" style="width:60%;" value="<?php echo $term_meta['cover'] ? $term_meta['cover'] : ''; ?>"><br />
|
|
<span class="description"><?php _e('La couverture du roman, sous format URL'); ?></span>
|
|
</td>
|
|
</tr>
|
|
|
|
<?php
|
|
}
|
|
|
|
function romans_taxonomy_custom_fields_add( $taxonomy ) {
|
|
// Check for existing taxonomy meta for the term you're editing
|
|
$t_id = $tag->term_id; // Get the ID of the term you're editing
|
|
$term_meta = get_option( "taxonomy_term_$t_id" ); // Do the check
|
|
?>
|
|
|
|
<div class="form-field">
|
|
<label for="term_meta[cover]"><?php _e('Couverture du roman'); ?></label>
|
|
<input type="text" name="term_meta[cover]" id="term_meta[cover]" />
|
|
<p><?php _e('La couverture du roman, sous format URL)'); ?>.</p>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
|
|
// Ajout des fields
|
|
add_action( 'roman_edit_form_fields', 'romans_taxonomy_custom_fields', 10, 2 );
|
|
add_action( 'roman_add_form_fields', 'romans_taxonomy_custom_fields_add' );
|
|
add_action( 'created_roman', 'save_taxonomy_custom_fields' );
|
|
add_action( 'edited_roman', 'save_taxonomy_custom_fields', 10, 2 );
|
|
|
|
/* 4. Menus custom
|
|
*
|
|
* Quelques menus custom
|
|
*
|
|
*/
|
|
|
|
function wpb_custom_new_menu() {
|
|
register_nav_menus(
|
|
array(
|
|
'top-navbar' => __( 'Navbar (gauche)' ),
|
|
'top-navbar-2' => __( 'Navbar (secondaire)' ),
|
|
'link-menu' => __( 'Liste des liens' ),
|
|
'footer-pages' => __( 'Pages dans le footer' ),
|
|
'social' => __( 'Reseaux sociaux' ),
|
|
'social-plus' => __( 'Reseaux sociaux supplémentaires' ),
|
|
)
|
|
);
|
|
}
|
|
add_action( 'init', 'wpb_custom_new_menu' );
|