Compare commits

...

2 Commits

Author SHA1 Message Date
Antoine M
5624335a79 FEATURE Enhancing get_authors_linked_to_posts to integrate main authors and sort authors list by name
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-23 16:46:14 +01:00
Antoine M
ef468b323f REFACTOR Moving the author save logic to carhop theme 2026-03-23 16:45:17 +01:00
3 changed files with 63 additions and 6 deletions

View File

@ -17,6 +17,7 @@ require_once(__DIR__ . '/includes/equipe.php');
require_once(__DIR__ . '/includes/navwalker.php');
require_once(__DIR__ . '/includes/post-type-analyses-etudes.php');
require_once(__DIR__ . '/includes/posts-save.php');
require_once(__DIR__ . '/includes/auteurs.php');
// require_once(__DIR__ . '/includes/widget.php');
// require_once( __DIR__ . '/includes/taxonomy.php');
// require_once( __DIR__ . '/includes/errorlog.php');

44
includes/auteurs.php Normal file
View File

@ -0,0 +1,44 @@
<?php
add_action('acf/save_post', 'carhop_save_auteurs_post');
function carhop_save_auteurs_post($post_id)
{
$post_type = get_post_type($post_id);
if ($post_type !== 'auteurs') return;
$is_carhop_member = $_POST['acf']['field_6997373d4aacd'];
$carhop_member_id = $_POST['acf']['field_6997373d4aad1'] ?? null;
if ($carhop_member_id === 0) return;
$first_name = null;
$last_name = null;
if (!$is_carhop_member) {
$first_name = get_field('first_name', $post_id);
$last_name = get_field('last_name', $post_id);
}
if (isset($is_carhop_member) && isset($carhop_member_id)) {
switch_to_blog(1);
$first_name = get_field('first_name', $carhop_member_id);
$last_name = get_field('last_name', $carhop_member_id);
restore_current_blog();
update_field('first_name', $first_name, $post_id);
update_field('last_name', $last_name, $post_id);
}
$full_name = $first_name . ' ' . $last_name;
if (isset($first_name) && isset($last_name) && isset($full_name) && $full_name != '') {
$post_slug = sanitize_title($full_name);
wp_update_post(array(
'ID' => $post_id,
'post_title' => $full_name,
'post_name' => $post_slug
));
}
}

View File

@ -379,26 +379,38 @@ function get_authors_linked_to_posts(array $post_ids)
return array();
}
$author_ids = array();
foreach ($post_ids as $post_id) {
$post_authors = get_field('authors', $post_id);
if (empty($post_authors)) continue;
foreach ($post_authors as $author) {
$author_id = is_object($author) ? $author->ID : (int) $author;
if ($author_id) {
$author_ids[$author_id] = $author_id; // set pour éviter les doublons
$has_main_author = get_field('has_main_author', $post_id);
$post_main_author = get_field('main_author', $post_id);
if (!empty($post_authors)) {
foreach ($post_authors as $author) {
$author_id = is_object($author) ? $author->ID : (int) $author;
if ($author_id) {
$author_ids[$author_id] = $author_id; // set pour éviter les doublons
}
}
}
if ($has_main_author && is_object($post_main_author) && isset($post_main_author->ID)) {
$author_ids[$post_main_author->ID] = $post_main_author->ID;
}
}
if (empty($author_ids)) {
return array();
}
return get_posts(array(
'post_type' => 'auteurs',
'post__in' => array_values($author_ids),
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'meta_key' => 'last_name',
'orderby' => 'meta_value',
));
}