我如何才能连接到帖子编辑器标题字段以更改HTML?

时间:2016-10-11 作者:mike23

我想在没有Javascript或PHP验证的情况下,在帖子编辑器中强制设置帖子标题,我想做一些非常简单的事情,比如在帖子标题输入元素中添加HTML“required”属性。

我看到有“edit\\u form\\u top”和“edit\\u form\\u after\\u title”,但这些钩子只在标题输入之前和之后。

是否有任何方法可以实际更改帖子标题字段的HTML?

2 个回复
SO网友:brianjohnhanna

no hook 要更改输入的HTML(仅限于enter_title_here 筛选以更改占位符文本)。不过,使用jQuery可以轻松实现这一点。在您的功能插件或主题中尝试此功能functions.php 文件:

// 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
}
然而,我应该注意到,不知道您的网站管理用户群是什么样子的,防止仅基于所需属性提交表单isn\'t implemented exactly the same across the board, 因此,如果这对您的用例很重要,那么您可能希望查看强制自己发出警报的实现,例如Force Post Title 插件。

SO网友:mike23

正如brianjohnhanna指出的那样,没有钩子可以更改标题字段的HTML,因此最接近的答案是进行jQuery验证。

下面是我最后要做的,创建一个插件:

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

        }

    });

});
它没有添加“required”属性,而是显示一条默认的Wordpress错误消息,我认为这与admin集成得更好。

相关推荐

使用html内部的短码功能

我知道我不擅长编码,但我尝试了在互联网上找到的任何东西,最终我得到了这个结果,这并没有给出一个错误,而且当在帖子中使用快捷码[我的播放列表]时,只有一部分显示“my\\u playlist”;聆听来自PostName的满分歌曲播放列表;你能告诉我我做错了什么吗?我应该如何在\\u title()之后生成其余的html;陈列非常感谢你 // function that runs when shortcode is called function wpb_playlist_shortcode(