chore: split functions.php

This commit is contained in:
Kazhnuz 2023-05-20 11:36:03 +02:00
parent 69794803c2
commit 3b1e2eca06
8 changed files with 359 additions and 329 deletions

View file

@ -5,311 +5,15 @@
* *
*/ */
include(TEMPLATEPATH . '/functions/posts-support.php');
include(TEMPLATEPATH . '/functions/flags.php');
include(TEMPLATEPATH . '/functions/breadcrumb.php');
include(TEMPLATEPATH . '/functions/tags-moreinfo.php');
include(TEMPLATEPATH . '/functions/profile-extra-fields.php');
include(TEMPLATEPATH . '/functions/romans.php');
include(TEMPLATEPATH . '/functions/reading-time.php');
/* 0. Excerpt and thumbnail support function wpb_custom_new_menu() {
*
* 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( 825, 825, true );
/* 1. Niveau support
*
* Permet d'afficher les niveaux de post pour les post features
*/
// 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(); ?>">kazhnuz.space</a>
</li><li class="breadcrumb-item" aria-current="page">
<span class="active"><i class="fa fa-<?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 pr-half pl-half">
<?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 pr-half pl-half">
<?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="fa fa-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( register_nav_menus(
array( array(
'top-navbar' => __( 'Navbar (gauche)' ), 'top-navbar' => __( 'Navbar (gauche)' ),
@ -320,21 +24,8 @@ register_taxonomy('roman', 'post',
'social-plus' => __( 'Reseaux sociaux supplémentaires' ), 'social-plus' => __( 'Reseaux sociaux supplémentaires' ),
) )
); );
} }
add_action( 'init', 'wpb_custom_new_menu' ); add_action( 'init', 'wpb_custom_new_menu' );
//estimated reading time //estimated reading time
function reading_time() { ?>
$content = get_post_field( 'post_content', $post->ID );
$word_count = str_word_count( strip_tags( $content ) );
$readingtime = ceil($word_count / 200);
if ($readingtime == 1) {
$timer = " minute";
} else {
$timer = " minutes";
}
$totalreadingtime = $readingtime . $timer;
return $totalreadingtime;
}

40
functions/breadcrumb.php Normal file
View file

@ -0,0 +1,40 @@
<?php
/////////////////////////////////////////////////////////////////////////////
// Breadcrumb supports
// Functions to show a breadcrumb
// @author Kazhnuz
function kspace_cat_breadcrumb_nav($categoryName, $icon) {
?>
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<?php echo site_url(); ?>">kazhnuz.space</a>
</li><li class="breadcrumb-item" aria-current="page">
<span class="active"><i class="fa fa-<?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 pr-half pl-half">
<?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 pr-half pl-half">
<?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="fa fa-rss" aria-hidden="true"></i><span class="sr-only">Flux RSS de <?php echo $categoryType; ?></span></a>
</div>
</div>
<?php
}
?>

91
functions/flags.php Normal file
View file

@ -0,0 +1,91 @@
<?php
/////////////////////////////////////////////////////////////////////////////
// Flags supports
// Allow to show a banner with a custom message, via a special taxonomy
//
// Version 0.1
// Register the taxonomy
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' );
// Add field to be able to change the flags
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 );
// 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 );
?>

View file

@ -0,0 +1,20 @@
<?php
/////////////////////////////////////////////////////////////////////////////
// Posts supports
// Activate the different elements supported by the posts
//
// Version 0.1
// Support des extraits
function kspace_post_supports() {
add_post_type_support( 'post', 'excerpt');
}
add_action( 'init', 'kspace_post_supports' );
// Support des thumbnails
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 825, 825, true );
?>

View file

@ -0,0 +1,42 @@
<?php
/////////////////////////////////////////////////////////////////////////////
// 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'] );
}
?>

View file

@ -0,0 +1,23 @@
<?php
/////////////////////////////////////////////////////////////////////////////
// Reading time
// Return the average reading time of an article
//
// Version 0.1
function reading_time() {
$content = get_post_field( 'post_content', $post->ID );
$word_count = str_word_count( strip_tags( $content ) );
$readingtime = ceil($word_count / 200);
if ($readingtime == 1) {
$timer = " minute";
} else {
$timer = " minutes";
}
$totalreadingtime = $readingtime . $timer;
return $totalreadingtime;
}
?>

73
functions/romans.php Normal file
View file

@ -0,0 +1,73 @@
<?php
/////////////////////////////////////////////////////////////////////////////
// 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 );
?>

View file

@ -0,0 +1,50 @@
<?php
/////////////////////////////////////////////////////////////////////////////
// Tags - More Info
// 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_moreinfo' );
function kspace_add_term_fields_moreinfo( $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_moreinfo', 10, 2 );
function kspace_edit_term_fields_moreinfo( $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_moreinfo' );
add_action( 'edited_post_tag', 'kspace_save_term_fields_moreinfo' );
function kspace_save_term_fields_moreinfo( $term_id ) {
update_term_meta(
$term_id,
'plus-dinfo',
sanitize_text_field( $_POST[ 'plus-dinfo' ] )
);
}
?>