Como posso ligar o campo de título do editor de postagem para alterar o HTML?

4

Eu quero tornar os títulos das postagens obrigatórios no editor de postagem sem a validação do Javascript ou do PHP. Gostaria de algo realmente simples, como adicionar o atributo "obrigatório" do HTML ao elemento de entrada do título da postagem.

Eu vejo que há "edit_form_top" e "edit_form_after_title", mas eles são antes e logo após a entrada do título.

Existe alguma maneira de realmente alterar o HTML do campo de título da postagem?

    
por mike23 11.10.2016 / 15:59

2 respostas

2

Existe sem gancho para alterar o HTML da entrada (somente o filtro enter_title_here para alterar o texto do espaço reservado). Você poderia fazer isso facilmente com o jQuery, no entanto. Tente isso no seu plugin de funcionalidade ou no arquivo functions.php do tema:

// 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
}

Devo observar, no entanto, não saber qual é a aparência da sua base de usuários para a administração deste site, que a prevenção de enviar um formulário com base somente no atributo obrigatório não é implementado exatamente da mesma maneira em todo o quadro , portanto, se isso for importante para o seu caso de uso, talvez você queira examinar uma implementação que force seu próprio alerta, como por exemplo no < href="https://wordpress.org/plugins/force-post-title/"> Forçar post título plugin.

    
por brianjohnhanna 11.10.2016 / 22:48
1

Como brianjohnhanna aponta, não há nenhum gancho para alterar o HTML do campo de título, então a resposta mais próxima possível é fazer a validação do jQuery.

Veja o que acabei fazendo, crie um plug-in com:

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 );

e o 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;

        }

    });

});

Em vez de adicionar o atributo "required", ele exibe uma mensagem de erro padrão do Wordpress. Acredito que isso esteja melhor integrado ao administrador.

    
por mike23 24.10.2016 / 10:29