Il y a environ un an, je me souviens d'avoir vu un plugin ou un code qui vous permettait d'ajouter un menu déroulant d'auteurs à la publication "publication" de la métabox au lieu d'être autonome.
Je n'arrive plus à trouver ce code et je me demandais si quelqu'un savait comment le faire facilement.
Dans une situation idéale, j'aimerais essentiellement ajouter une ligne supplémentaire sous la ligne "Visibilité:" du métabox Publier indiquant "Auteur:": avec le nom de l'auteur actuel et un lien d'édition après le nom. En cliquant sur le lien modifier, un menu déroulant apparaîtra avec les mêmes informations que celles disponibles dans l'auteur metabox.
En tout cas, j'apprécierais beaucoup de savoir comment cela peut être fait.
Je suis un peu naze avec les trucs admin alors testez cela attentivement. J'ai eu quelques problèmes avec les utilisateurs qui ne venaient pas dans la liste déroulante, mais cela échoue aussi avec la méta-boîte par défaut - probablement à cause de ma pile de test foirée.
add_action( 'admin_menu', 'remove_author_box' );
add_action( 'post_submitbox_misc_actions', 'author_in_publish' );
function remove_author_box() {
remove_meta_box( 'authordiv', 'post', 'normal' );
}
function author_in_publish() {
global $post_ID;
$post = get_post( $post_ID );
echo '<div class="misc-pub-section">Author: ';
post_author_meta_box( $post );
echo '</div>';
}
Je sais que c'est une vieille question, mais une réponse mise à jour semble toujours pertinente à donner.
La réponse d'origine aurait peut-être été la meilleure option à l'époque, mais il manque une vérification si le type de publication prend en charge le changement d'auteur et l'adaptation au style de la boîte méta.
PHP principal
add_action('admin_menu', function (): void {
$type = getCurrentPostType();
if ($type) {
remove_meta_box('authordiv', $type, 'normal');
}
});
add_action('post_submitbox_misc_actions', function (): void {
global $post, $user_ID;
if (!empty($post)) {
$supportsAuthor = post_type_supports($post->post_type, 'author');
if ($supportsAuthor) {
$userId = empty($post->ID) ? $user_ID : $post->post_author;
$user = get_userdata($userId);
echo '... fetch some template here';
}
}
});
Helper PHP
function getCurrentPostType(): ?string {
// https://Gist.github.com/bradvin/1980309
global $post, $typenow, $current_screen;
if ($post && $post->post_type) {
return $post->post_type;
} elseif ($typenow) {
return $typenow;
} elseif ($current_screen && $current_screen->post_type) {
return $current_screen->post_type;
} elseif (isset($_REQUEST['post_type'])) {
return sanitize_key($_REQUEST['post_type']);
} elseif (isset($_REQUEST['post'])) {
$p = get_post($_REQUEST['post']);
if ($p) {
return $p->post_type;
}
}
// Unknown
return null;
}
PHTML
<div class="misc-pub-section misc-pub-author" id="author">
<?=sprintf(__('Author: %s', 'aym'), "<b>{$user->display_name}</b>")?>
<a href="#author" class="edit-author hide-if-no-js" role="button" aria-label='<?=__('Edit author', 'aym')?>'>
<?=__('Edit', 'aym')?>
</a>
<div id="post-author-select" class="hide-if-js" style="display: none;">
<?php post_author_meta_box($post)?>
<p>
<a href="#author" class="save-post-author hide-if-no-js button">OK</a>
<a href="#author" class="cancel-post-author hide-if-no-js button-cancel">Cancel</a>
</p>
</div>
</div>
JavaScript
(function($) {
// Author select in admin edit sidebar
var $baseEl = $('#author');
var $select = $('select', $baseEl);
var $form = $('#post-author-select', $baseEl);
var previousValue = $select.val();
$('a[href="#author"]', $baseEl).on('click', function(e) {
e.preventDefault();
$form.slideToggle(300);
});
$('.save-post-author', $baseEl).on('click', function(e) {
e.preventDefault();
previousValue = $select.val();
$('b', $baseEl).text($("option:selected", $select).text());
$form.slideUp(300);
});
$('.cancel-post-author', $baseEl).on('click', function(e) {
e.preventDefault();
$select.val(previousValue);
$form.slideUp(300);
});
})(jQuery);
CSS
.misc-pub-author::before {
content: "\f110";
color: #82878c;
font: normal 20px/1 dashicons;
speak: none;
display: inline-block;
margin-left: -1px;
padding-right: 3px;
vertical-align: top;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
#post-author-select {
padding-top: 5px;
}
#post-author-select select {
width: 100%;
}
p.s. Si vous rencontrez des erreurs, cela peut être dû au fait que la version originale que j'ai utilisée est faite en SCSS, TypeScript et PHP 7.2. Et utilise un moteur de modèle personnalisé.
ou utilisez le plugin Adminimize pour personnaliser ceci via des options