Ваш путь: Главная » Сниппеты, хаки, функции » текущая страница

возможно заказать разработку или сопровождение, услуги вашего сайта/блога


обновлено: 2024-02-13 в теме: Сниппеты, хаки, функции
Запросто с WordPress создание и продвижение сайтов ATs media

Как ограничить длину комментария – настройки поместим в админке WP…

Решение вопроса:

…ограничим длину комментария в стандартной форме комментирования Вордпресс! Как это работает? если, например, комментатор решил прокомментировать некую статью нашего сайта, то, набирая текст, будет ограничен в количестве символов. То есть – если текст будет слишком короток (длина задаётся в настройках), либо слишком длинный – комментатор, при клике на кнопку “Отправить”, будет переправлен на страницу ошибки, где ему будет предложено поправить текст в соответствии с ограничениями длины комментария…

Все настройки функции ограничения длины комментирования будут выведены в настройки админки в раздел “Настройки” – это удобнее, нежели время от времени копаться в коде…

1 – создадим файл. 2 – подключим его в файле функций. Всё!


 

 

ограничение длины комментария Вордпресс

 

 

 

В итоге наших правок, в админке, в разделе “Настройки”, появится новая ссылка (опция) “Обсуждения: размер комментария”, перейдя по которой, откроется страница настроек, где мы запросто сможем задать (по количеству символов) длину комментария (скриншот стр. настроек в финале статьи).

 

 

 

для комментариев

 

 

 

 

Нота:

 

В подобных случаях редактирования активного шаблона, я всегда рекомендую создать в корне шаблона отдельную папку, в которую же будут помещены какие-то необходимые файлы, так сказать, по темам. …ну, чтобы не захламлять основной файл функций (functions.php)… не путаться дабы.

 

Как поместить какие-то объёмные функции в отдельные файлы шаблона, описано в этой статье.

 

А ещё лучше поступить так – если вы планируете часто менять шаблоны сайта – создайте отдельный плагин: в этом случае, как догадываетесь, помещённый в плагин функционал остаётся при смене шаблона активным!

 

 

 

 

Итак, приступим…

 

 

 

как ограничить длину комментария – функция

 

 

 

 

1 – создаём в корне ШАБЛОНА папку с именем, скажем, my-functions

 

2 – создадим произвольный файл, к примеру, с таким именем edit-my-comment.php и поместим его в созданную папку…

 

Как только папка и файл созданы, заходим в эту созданную папку и открываем новый файл edit-my-comment.php.

 

В этот файл помещаем такую функцию:

 

 

код подробнее...

<?php
/**
* Function that adds settings page in the menu - ДОБАВИТЬ В ФАЙЛ ФУНКЦИЙ: include_once "my-functions/edit-my-comment.php"; // размер МАКСИМАЛЬНО/МИНИМАЛЬНЫХ комментариев
*/
$atss_edit_comment = 'edit-co-ats.php';
// it's part of the URL of the page
add_action('admin_menu', 'ats_edit_options_comm');
function ats_edit_options_comm() {
global $atss_edit_comment;
add_options_page( 'Обсуждения: размер комментария', 'Обсуждения: размер комментария', 'manage_options', $atss_edit_comment, 'edit_option_comment'); // add_options_page() — раздел Настройки, раздел Комментарии - add_comments_page
}
/**
* This return function (Callback)
*/
function edit_option_comment(){
global $atss_edit_comment;
?><div class="wrap">
<h2>Параметры размера комментаториев:</h2>
<form method="post" enctype="multipart/form-data" action="options.php">
<?php
settings_fields('ats_edit_options_comm');
do_settings_sections($atss_edit_comment);
?>
<p class="submit"><input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /></p>
</form></div><?php
}
/*********************************** ************** */
// Create text
add_action( 'admin_init', 'ats_edit_settings_textr' );
function ats_edit_settings_textr() {

global $atss_edit_comment;

register_setting( 'ats_edit_options_comm', 'ats_edit_options_comm', 'atses_validate_settings' );
// Added section and
add_settings_section( 'atss_section_comm_edit', '<br />Поместите в поля ниже значения размеров комментария, которых должен придерживаться комментатор:', '', $atss_edit_comment );
// atss_section_comm_edit - id секции
$atssys_edit_field_params = array(
'type' => 'text',
'id' => 'atsy_text_comm_edit'
);
//- ЭТО ЕСЛИ ПОКАЗЫВАТЬ ДАННЫЕ В АДМИНКЕ - echo '<br />';
//echo $als_options['atsy_text_comm_edit'];
add_settings_field( 'atsy_texter_field_none', '<br /><br /><br /><br />Введите цифровое значение:', 'atssys_option_display_settings_edit', $atss_edit_comment, 'atss_section_comm_edit', $atssys_edit_field_params );
}
// text function
function atssys_option_display_settings_edit($args) {
extract( $args );
$option_name = 'ats_edit_options_comm';
$o = get_option( $option_name );
switch ( $type ) {
case 'text':
$o[$id] = esc_attr( stripslashes($o[$id]) );
$current_user = wp_get_current_user();
echo "Здравствуйте&nbsp;";
echo '' . $current_user->display_name . '&nbsp;!&nbsp;&mdash;&nbsp;';
echo 'Ваше сообщение комментаторам сайта, например: <br /><span style="font-weight: 700;color: #038900;font-style: italic;"><b>Задайте размер комментария —<br />максимальное количество смволов:</b></span>';
$als_options = get_option('ats_edit_options_comm');
echo "<?php _e('Save Changes') ?>";
echo "<br /><br />";
echo "<textarea placeholder=' Ваше сообщение...' class='code large-text' cols='50' rows='2' type='text' id='$id' name='" . $option_name . "[$id]' >$o[$id]</textarea>";
echo ($desc != '') ? "<br /><br /><span class='description'>$desc</span>" : "";
} }
// fin news text function
/*************************** *************************************/
// Create 2 text
add_action( 'admin_init', 'ats_edit_settings_textcom' );
function ats_edit_settings_textcom() {
//
global $atss_edit_comment;
//
register_setting( 'ats_edit_options_comm', 'ats_edit_options_comm', 'atses_validate_settings' );
// Added section and
add_settings_section( 'atss_section_comms_edit', '', '', $atss_edit_comment );
// atss_section_comms_edit - id секции
$atssyse_edit_field_params = array(
'type' => 'text',
'id' => 'atsys_text_comm_edit',
'desc' => '...если минимальный/максимальный размеры комментария указаны, <span style="font-weight: 700;color: #038900;font-style: italic;">то комментатор будет обязан придерживаться этих параметров </span>'
);
add_settings_field( 'atsy_texter_field_none22', '<br /><br />Введите цифровое значение:', 'atssysysy_option_display_settings_edit', $atss_edit_comment, 'atss_section_comms_edit', $atssyse_edit_field_params );
}
// text function
function atssysysy_option_display_settings_edit($args) {
extract( $args );
$option_name = 'ats_edit_options_comm';
$o = get_option( $option_name );
switch ( $type ) {
case 'text':
$o[$id] = esc_attr( stripslashes($o[$id]) );
$current_user = wp_get_current_user();
// можно добавить ПРИВЕТСТВИЕ АДМИНА:
echo '<span style="font-weight: 700;color: #038900;font-style: italic;"><b>...минимальное количество смволов:</b></span>';
$als_options = get_option('ats_edit_options_comm');
echo "<?php _e('Save Changes') ?>";
echo "<br /><br />";
echo "<textarea placeholder=' Ваше сообщение...' class='code large-text' cols='50' rows='2' type='text' id='$id' name='" . $option_name . "[$id]' >$o[$id]</textarea>";
echo ($desc != '') ? "<br /><br /><span class='description'>$desc</span>" : "";
} }
// fin news text function
// ******************** **********************
add_filter( 'preprocess_comment', 'wavelength_comm_comment' );
function wavelength_comm_comment($comment) {
$als_options = get_option('ats_edit_options_comm');
$atsd = $als_options['atsy_text_comm_edit'];          // это для МАКСИНМУМ символов
$csmssss = $als_options['atsys_text_comm_edit'];      // это для МИНИМУМ символов
//echo $als_options['atsy_text_comm_edit'];           // это вывод в СООБЩЕНИЕ КОММЕНТАТОРУ на странице ошибки
//echo "<br />";
//echo $als_options['atsys_text_comm_edit'];          // это вывод в СООБЩЕНИЕ КОММЕНТАТОРУ на странице ошибки

if ( strlen( $comment['comment_content'] ) > $als_options['atsy_text_comm_edit'] ) {
wp_die("Комментарий слишком длинный. Пожалуйста, пишите комментарии длиной не более $atsd символов.<br /><a href='javascript:history.go(-1);'>˂ вернуться назад и отредактировать комментарий</a>");
}
if ( strlen( $comment['comment_content'] ) < $als_options['atsys_text_comm_edit'] ) {
wp_die("Комментарий слишком короткий. Пожалуйста, напишите не менее $csmssss символов.<br /><a href='javascript:history.go(-1);'>˂ вернуться назад и отредактировать комментарий</a>");
}
return $comment;
}


 

Этот код выше (его функционал) включает в себя всё: и функцию обработки страницы настроек, и небольшой фрагмент кода, отвечающий за, скажем так, организацию лимитов длины комментария.

 

В комментариях к коду я старался дать все необходимые пояснения. Но если что вам не ясно, задавайте вопросы в комментариях…

 

 

 

 

завершающий этап настроек функционала ограничения длины комментария

 

 

 

 

подключение (инициализация) созданного файла:

 

 

…для того, чтобы подключить созданный файл edit-my-comment.php, – то есть, чтобы ограничение длины комментария вступили в силу – открываем файл функций functions.php активного шаблона и добавляем такую строку:

 

 

include_once "my-functions/edit-my-comment.php"; // размер МАКСИМАЛЬНО/МИНИМАЛЬНЫХ комментариев

 

 

Место прописки строки произвольное, однако, в скобках скажу: обычно подобные строки подключают где-то в старте файла.

 

 

 

 

А если вы создаёте отдельный плагин ограничения длины комментария, то вернитесь к статье по ссылке выше, и изучите как создать собственный плагин – все плюсы этого предприятия!

 

 

 

 

Ну, что ж… к только все данные выше шаги будут выполнены, у вас в админке (в разделе настроек) появится опция (ссылка) ведущая на страницу регулировки “Параметры размера комментария”.

 

 

 

ограничить длину комментария

 

 

 

 

Нам с вами только и останется что задать требуемую величину длины комментария в “максимальное количество символов:” и “минимальное количество символов:”.

 

 

Всё! готово дело…

 

 


...А мне остаётся только раскланяться... и пожелать полезной работы в сети

 

 

…если что осталось непонятным, задавайте вопросы…

 

 


...вопросы в комментариях - помогу, в чём дюжу...
mihalica.ru !


Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...





Нажатия на кнопочки определяют Ваше высокое гражданское сознание

Поделитесь соображениями: Ваши мысли очень важны!

Внимание! Обязательные поля помечены *

  отныне доступен плагин: ats privacy policy ©


  1. На минималке не воспринимает кириллицу. Выставил на тест «2», ввожу «q» — требует камент длиннее, но при вводе «й» — кушает. Там , кстати, js какой-нибудь нельзя прикрутить, чтобы страница не менялась? И, при ограничениях, неплохо бы рядом с полем ввода камента счётчик поставить — какой лимит ввода остаётся по мере набора.

    Ответить - Антон