web-dev-qa-db-fra.com

Comment puis-je accrocher dans le champ de titre de l'éditeur de post afin de modifier le code HTML?

Je souhaite rendre les titres de publication obligatoires dans l'éditeur de publication sans Javascript ou PHP validation. Je voudrais quelque chose de très simple, comme ajouter l'attribut HTML "required" à l'élément d'entrée post title.

Je vois qu'il y a "edit_form_top" et "edit_form_after_title" mais ceux-ci sont juste avant et juste après l'entrée du titre.

Existe-t-il un moyen de changer le code HTML du champ du titre de l'article?

3
mike23

Il y a no hook pour changer le code HTML de l'entrée (seul le filtre enter_title_here permet de changer le texte de l'espace réservé). Vous pouvez le retirer facilement avec jQuery, cependant. Essayez ceci dans votre plugin de fonctionnalité ou dans le fichier functions.php du thème:

// Add to the new post screen for any post type
add_action( 'admin_footer-post-new.php', 'wpse_add_required_attr_to_title_field' );

// Add to the post edit screen for any post type
add_action( 'admin_footer-post.php', 'wpse_add_required_attr_to_title_field' );

function wpse_add_required_attr_to_title_field() {
    ?>
    <script>
        jQuery(document).ready(function($){
            $('input[name=post_title]').prop('required',true);
        });
    </script>
    <?php
}

Je dois toutefois noter que, ne sachant pas à quoi ressemble votre base d'utilisateurs pour l'administration de ce site, il est impossible d'empêcher de soumettre un formulaire uniquement en fonction de l'attribut requis n'est pas implémenté de la même manière , si cela est important pour votre cas d'utilisation, vous pouvez envisager une implémentation qui impose sa propre alerte, comme par exemple dans Force Post Title plugin.

2
brianjohnhanna

Comme le souligne brianjohnhanna, il n'y a pas de crochet pour changer le code HTML du champ titre, la réponse la plus proche possible est donc de valider jQuery.

Voici ce que j'ai fini par créer un plugin avec:

function wpse_242302_mandatory_title( $hook ) {

    global $post;

    if ( $hook == 'post-new.php' || $hook == 'post.php' ) {

        wp_enqueue_script( 'mandatory-title', plugins_url( 'mandatory-title.js', __FILE__ ), array( 'jquery' ) );

    }
}
add_action( 'admin_enqueue_scripts', 'wpse_242302_mandatory_title', 20, 1 );

et le javascript:

$(document).ready(function() {

    $('#post').submit(function(){

        if( !$('input[name=post_title]').val() ) {

            $( '.wrap > h1').after('<div id="message" class="error"><p>Please enter a title.</p></div>' );

            return false;

        }

    });

});

Au lieu d’ajouter l’attribut "required", il affiche un message d’erreur Wordpress par défaut, j’ai pensé que cela s’intégrait mieux avec l’administrateur.

1
mike23