Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация Как установить лимит публикаций в сутки ?
19 ответ(ов) в теме
bocman.sev@gmail.com
не в сети 6 дней
На сайте с 16.09.2020
Участник
Тем 103
Сообщения 401
1
22:53
Версия WP-Recall: 16.23.2

подскажите какой хук публикации и получиться ли так проверить на лимит?

add_action( 'add_post_rcl', 'post_limit', 99, 1 ); - правильный ли хук?

function post_limit() {
$wpdb->get_results(SELECT COUNT(ID)
FROM `wp_posts`
WHERE wp_posts.post_type='post'
AND wp_posts.post_status='publish'
AND wp_posts.post_date = CURDATE()
AND wp_posts.post_autor = $user_id);

if ( $wpdb > '5' ) {
return false;
}

}

Редакции сообщения
12.10.2020 22:55bocman.sev@gmail.comПричина: не указано
12.10.2020 22:56bocman.sev@gmail.comПричина: не указано
12.10.2020 22:57bocman.sev@gmail.comПричина: не указано
12.10.2020 22:58bocman.sev@gmail.comПричина: не указано
0
Владимир (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Модератор
Тем 39
Сообщения 18027
2
00:51

Перенесено в кастомизации.

Вы этот хук зачем выдумали? Его нет в исходном коде

Используйте ВП хук transition_post_status. найти его можно в документации вордпресс

Вы не можете просматривать опубликованные ссылки
0
bocman.sev@gmail.com
не в сети 6 дней
На сайте с 16.09.2020
Участник
Тем 103
Сообщения 401
3
01:12

А если публикация в настройках плагина паблик пост сразу без черновиков?

0
Владимир (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Модератор
Тем 39
Сообщения 18027
4
01:21

я не понимаю о чем вы. разверните свой вопрос подробней

0
bocman.sev@gmail.com
не в сети 6 дней
На сайте с 16.09.2020
Участник
Тем 103
Сообщения 401
5
12:43

когда публикация идет из кабинета пользователя, публикуется сразу пост со статусом опубликованно, а хук скинули выше срабатывает на изменения статуса, сработает ли хук если посты сразу публикуются без модерации

Редакции сообщения
13.10.2020 12:44bocman.sev@gmail.comПричина: не указано
0
Владимир (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Модератор
Тем 39
Сообщения 18027
6
12:47

хук сработает. Но помимо хука вы должны написать функцию с нужной логикой и повесить на этот хук

0
bocman.sev@gmail.com
не в сети 6 дней
На сайте с 16.09.2020
Участник
Тем 103
Сообщения 401
7
14:37

только почему-то публикует не смотря на проверку, подскажите , пожалуйста ,что не учел ,вывел каунт print_r($count); показало 25

add_action( 'transition_post_status', 'post_limit', 10, 3 );
function post_limit( $new_status, $old_status, $post ) {
  
 global $wpdb;
$count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(wp_posts.ID) 
FROM `wp_posts` 
WHERE wp_posts.post_type='post' 
AND wp_posts.post_status='publish' 
AND wp_posts.post_date between  CURDATE() 
AND CURDATE()+1  
AND wp_posts.post_author=".$post->post_author));  

  if ( $count > 5 ) {
return false;
}

}

Редакции сообщения
13.10.2020 14:38bocman.sev@gmail.comПричина: не указано
13.10.2020 14:38bocman.sev@gmail.comПричина: не указано
13.10.2020 14:38bocman.sev@gmail.comПричина: не указано
13.10.2020 14:39bocman.sev@gmail.comПричина: не указано
13.10.2020 14:40bocman.sev@gmail.comПричина: не указано
13.10.2020 14:42bocman.sev@gmail.comПричина: не указано
0
Владимир (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Модератор
Тем 39
Сообщения 18027
8
14:57

может надо не false возвращать а wp_die?
я бы просто убирал форму публикации и писал что у вас на сегодня лимит исчерпан

0
bocman.sev@gmail.com
не в сети 6 дней
На сайте с 16.09.2020
Участник
Тем 103
Сообщения 401
9
15:05

а как скрыть,как тогда убрать форму из вкладки публикация и вывести там сообщение?

Редакции сообщения
13.10.2020 15:07bocman.sev@gmail.comПричина: не указано
13.10.2020 15:07bocman.sev@gmail.comПричина: не указано
0
Владимир (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Модератор
Тем 39
Сообщения 18027
10
15:08

Это можно сделать через фильтры:

Вы не можете просматривать опубликованные ссылки

Вы не можете просматривать опубликованные ссылки
0
bocman.sev@gmail.com
не в сети 6 дней
На сайте с 16.09.2020
Участник
Тем 103
Сообщения 401
11
15:29

форма скрылась ,но сообщение не вывелось ,что не дописал ?

function filter_function_name( $data ) {
    if(!isset($data['postform'])) return $data;
    $data['postform']['content'][0]['callback'] = 'new_function_postform';
    return $data;
}
add_filter( 'rcl_tabs', 'filter_function_name' );
 
function new_function_postform($user_lk){
  echo "лимит 5 постов в сутки";
}

0
Владимир (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Модератор
Тем 39
Сообщения 18027
12
15:43

сделайте не echo, а return

и $data['content'][0]['callback']['name']

вы распечатайте что содержит $data и посмотрите как выгладит массив. Воспроизведите также. Руководство может и отстать от текущей реализации

0
bocman.sev@gmail.com
не в сети 6 дней
На сайте с 16.09.2020
Участник
Тем 103
Сообщения 401
13
17:49

вот массив,но не зависимо от того что , что-то то меняю вкладка остаеться
print_r($data['prime-forum']);

Array
(
    [id] => prime-forum
    [supports] => Array
        (
            [0] => ajax
        )

    [name] => Форум
    [public] => 0
    [icon] => fa-sitemap
    [output] => menu
    [content] => Array
        (
            [0] => Array
                (
                    [id] => my-topics
                    [icon] => fa-folder
                    [name] => Начатые темы
                    [callback] => Array
                        (
                            [name] => pfm_get_user_topics_list
                        )

                )

            [1] => Array
                (
                    [id] => my-posts
                    [icon] => fa-folder
                    [name] => Сообщения в чужих темах
                    [callback] => Array
                        (
                            [name] => pfm_user_posts_other_topics
                        )

                )

        )

    [hidden] => 0
    [order] => 4
)

или такой масив print_r($data['postform']);

Array
(
    [id] => postform
    [name] => Публикация
    [public] => 0
    [icon] => fa-pencil
    [content] => Array
        (
            [0] => Array
                (
                    [callback] => new_function_postform
                    [id] => postform
                    [name] => Публикация
                    [icon] => fa-pencil
                )

        )

    [hidden] => 0
    [order] => 6
)

Редакции сообщения
13.10.2020 17:55bocman.sev@gmail.comПричина: не указано
13.10.2020 17:55bocman.sev@gmail.comПричина: не указано
13.10.2020 17:56bocman.sev@gmail.comПричина: не указано
0
василий
не в сети 2 часа
На сайте с 20.03.2013
Участник
Тем 20
Сообщения 81
14
18:02

Может лучше так попробовать

add_action( 'rcl_preview_post', 'my_function', 10 );
function my_function( $postdata ) {
if($postdata['post_type']!= 'post') return ;
global $wpdb;

//здесь  получаете сколько опубликовал в сутки
if ( $count >= 5 ) {
wp_send_json(['error' => 'лимит 5 постов в сутки!']);
}
}

Редакции сообщения
13.10.2020 18:06василийПричина: не указано
0
Владимир (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Модератор
Тем 39
Сообщения 18027
15
18:07

bocman.sev@gmail.com сказал(а)
[callback] => new_function_postform

- ну это название вашей функции? А в ней что?

василий сказал(а)
Может лучше так попробовать

ну... значит пользователь пишет полчаса, час - а потом бац и ему не дают публиковать? Эти сообщения надо выводить до того как кто-то захочет написать. т.е. вариант через подмену коллбека функции - самый честный для пользователя

0
Андрей CS
не в сети 2 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 15118
16
18:10

bocman.sev@gmail.com сказал(а)
или такой масив print_r($data['postform']);

неверный массив получился, ключ callback должен содержать массив

[callback] => Array(
    [name] => pfm_user_posts_other_topics
)

0
василий
не в сети 2 часа
На сайте с 20.03.2013
Участник
Тем 20
Сообщения 81
17
18:11

ну... значит пользователь пишет полчаса, час - а потом бац и ему не дают публиковать? Эти сообщения надо выводить до того как кто-то захочет написать. т.е. вариант через подмену коллбека функции - самый честный для пользователя

Тоже верно. Вы правы. Лучше сразу спрятать форму.

0
bocman.sev@gmail.com
не в сети 6 дней
На сайте с 16.09.2020
Участник
Тем 103
Сообщения 401
18
18:17

так сделал без подсоединения к хуку публикации и отработало правильно

function filter_function_name( $data ) {
  if(!isset($data['postform'])) return $data;
  	global $wpdb;
  	global $user_LK;
	$count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(wp_posts.ID) FROM `wp_posts` WHERE wp_posts.post_type='post' AND wp_posts.post_status='publish' AND wp_posts.post_date between  CURDATE() AND CURDATE()+1  AND wp_posts.post_author=".$user_LK));
  if ( $count > 5 ) {
    $data['postform']['content'][0]['callback']['name']  = new_function_postform;}
    return $data;
}
add_filter( 'rcl_tabs', 'filter_function_name' );

function new_function_postform($user_lk){
 return '<h3>лимит 5 постов в сутки</h3>';
}

Редакции сообщения
13.10.2020 18:18bocman.sev@gmail.comПричина: не указано
13.10.2020 18:19bocman.sev@gmail.comПричина: не указано
0
bocman.sev@gmail.com
не в сети 6 дней
На сайте с 16.09.2020
Участник
Тем 103
Сообщения 401
19
18:20

только тут наверно надо if ( $count >= 5 ) { или if ( $count == 5 )

0
Вы не имеете права на публикацию сообщений в этой теме