here is some update for whom it can be interesting. I made setting page with minimum and maximum title length checking
<?php
/*
Plugin Name: Force Post Title
Plugin URI: https://www.jpsays.com
Description: Forces user to assign a Title to a post before publishing
Contributors: j_p_s
Author: Jatinder Pal Singh
Version: 1.2
Author URI: https://www.jpsays.com/
*/
function force_post_title_init()
{
wp_enqueue_script('jquery');
}
function force_post_title()
{
$min=get_option('title_page_fields')[title_min];
$max=get_option('title_page_fields')[title_max];
echo "<script type='text/javascript'>\n";
echo "
window.onload = function() {
jQuery('.editor-post-publish-panel__toggle').mouseover(function(){
console.log('run');
var testervar = jQuery('.editor-post-title__input')[0];
if (testervar.value.length >= ".$min." && testervar.value.length<=".$max.")
{
jQuery('.editor-post-publish-panel__toggle')[0].disabled=false;
//console.log('return true '+testervar.value.length);
}
else
{
jQuery('.editor-post-publish-panel__toggle')[0].disabled=true;
alert('Заголовок должен быть от ".$min." до ".$max." символов.\\nСейчас '+testervar.value.length);
//console.log('return false');
}
});
}";
echo "</script>\n";
}
function page_settings() {
echo '<nodiv class="wrap"><h2>Настройка заголовка</h2>';
echo '<form method="post" action="options.php">';
settings_fields('title_page_fields');
do_settings_sections('force_post_title_settings.php');
submit_button();
echo '</form>';
echo '</nodiv>';
}
add_action('admin_init', 'force_post_title_init');
add_action('add_meta_boxes', 'force_post_title');
add_action('admin_menu', 'add_admin_menu');
function add_admin_menu() {
add_options_page(
'Настройка заголовка',
'Настройки заголовка',
'edit_posts',
'force_post_title_settings.php',
'page_settings'
);
}
function title_page_fields() {
register_setting('title_page_fields', 'title_page_fields','validate_settings');
add_settings_section(
'snap_section_id',
'Настройки плагина force title page',
'',
'force_post_title_settings.php'
);
add_settings_field(
'title_max',
'Максимальный размер заголовка',
'custom_html_file_callback',
'force_post_title_settings.php',
'snap_section_id',
array(
'id' => 'title_max',
'title' => 'Максимальный размер заголовка',
'option_name' => 'title_page_fields',
'title_max' =>''
)
);
add_settings_field(
'title_min',
'Минимальный размер заголовка',
'custom_html_file_callback',
'force_post_title_settings.php',
'snap_section_id',
array(
'id' => 'title_min',
'title' => 'Минимальный размер заголовка',
'option_name' => 'title_page_fields',
'title_min' =>''
)
);
}
add_action('admin_init', 'title_page_fields');
function custom_html_file_callback($val) {
extract( $val );
$option_name = 'title_page_fields';
$o = get_option( $option_name );
$o[$id] = esc_attr( stripslashes($o[$id]) );
echo "<input
type='text'
name='".$option_name."[$id]'
id='$id'
value='$o[$id]' />
<br>";
}
/*
* Функция проверки правильности вводимых полей
*/
function theme_validate_settings($input) {
return $input;
}
?>
]]>
Hello,
It’s possible add a functionality the required 50 character on title before to post?
The same feature for excerpt of post?
]]>Works this plugin also with BBpress?
https://www.ads-software.com/extend/plugins/force-post-title/
]]>