14ответ(ов) в теме
Vadim021
не в сети 4 года
На сайте с 16.02.2020
Участник
Тем 1
Сообщения 7
1
10:09
Версия WP-Recall: 18.

Здравствуйте, при попытке написать пост от незарегистрированного юзера плагин требует ввести имя и емайл. Как эти поля убрать / отключить? Чтобы пользователи могли постить анонимно. В настройках вордпресс возможность постить без регистрации активирована.

0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18646
2
10:11

Здравствуйте.

У плагина нет анонимного постинга.
Пользователь обязан указать свой e-mail

0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18646
3
10:13

В настройках вордпресс возможность постить без регистрации активирована.

у вордпресс нет такой возможности. Дайте скрин что я не прав

0
Vadim021
не в сети 4 года
На сайте с 16.02.2020
Участник
Тем 1
Сообщения 7
4
11:11

Если подправить файлы class-rcl-public-form.php и functions-ajax.php, то можно постить без регистрации и ввода данных. Но тогда не отображается имя, даже если оно было введено. Надо искать дальше. Или было бы интересно увидеть мнение автора плагина по этому вопросу.

0
Андрей CS
не в сети 15 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16879
5
12:13

имя прикрепляется к автору публикации, а так как автора публикации нет, то нет и его имени

0
Vadim021
не в сети 4 года
На сайте с 16.02.2020
Участник
Тем 1
Сообщения 7
6
15:28

Андрей CS сказал(а)
имя прикрепляется к автору публикации, а так как автора публикации нет, то нет и его имени

А весь код после строки if ( !rcl_get_option( 'user_public_access_recall' ) && !$user_ID ) { } описывает регистрацию нового пользователя, если я правильно понимаю? Возможно ли вместо этого просто публиковать посты от "анонимного автора"? В крайнем случае, создав такой профиль и присваивая его id каждому посту от анонимных юзеров, если это нельзя сделать другим способом.

0
Андрей CS
не в сети 15 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16879
7
18:40

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

Редакции сообщения
16.02.2020 18:43Андрей CSПричина: не указано
0
Vadim021
не в сети 4 года
На сайте с 16.02.2020
Участник
Тем 1
Сообщения 7
8
19:35

Андрей CS сказал(а)
возможно, создайте такого пользователя и назначайте публикации ему вместо регистрации нового пользователя

Уже радует, что такая возможность есть.
Только я не совсем понимаю, как такое осуществить.

0
Андрей CS
не в сети 15 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16879
9
20:25

ну вы же сами указали что

весь код после строки if ( !rcl_get_option( 'user_public_access_recall' ) && !$user_ID ) { } описывает регистрацию нового пользователя

вам нужно вместо этого кода написать назначение публикуемой записи за определенным пользователем, ну или если публикация на тот момент еще не опубликована, то сделать это позже, например в момент работы хука update_post_rcl

0
Vadim021
не в сети 4 года
На сайте с 16.02.2020
Участник
Тем 1
Сообщения 7
10
22:51

Андрей CS сказал(а)
вам нужно вместо этого кода написать назначение публикуемой записи за определенным пользователем

Я честно искал, как это сделать, но так и не нашёл: какая функция или переменная позволяет это осуществить?

Редакции сообщения
16.02.2020 22:51Vadim021Причина: не указано
0
Андрей CS
не в сети 15 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16879
11
09:00

поможет функция wp_update_post()

0
Vadim021
не в сети 4 года
На сайте с 16.02.2020
Участник
Тем 1
Сообщения 7
12
11:10

Поискал информацию о wp_update_post(). По примерам составил код:

$post_id = get_the_ID(); // id изменяемого поста
        $user_id = 1; // id юзера, от лица которого нужно опубликовать пост
        $arg = array(
    'ID' => $post_id,
    'post_author' => $user_id // посту присваивается новый автор
        );
        wp_update_post( $arg );

Поместил в
if ( !rcl_get_option( 'user_public_access_recall' ) && !$user_ID ) { }

Результат предсказуем (его отсутствие). В чём ошибка? Догадываюсь, что во всём. Как заставить это работать?

0
Андрей CS
не в сети 15 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16879
13
13:05

вам подойдет назначение автора через фильтр pre_update_postdata_rcl, получаете в фильтре массив данных публикации и заменяете post_author на требуемый, должно сработать

0
Vadim021
не в сети 4 года
На сайте с 16.02.2020
Участник
Тем 1
Сообщения 7
14
16:23

Всё оказалось гораздо проще.
Я полностью отключил блок if ( !rcl_get_option( 'user_public_access_recall' ) && !$user_ID ) {} в файле functions-ajax.php, чтоб он не требовал вводить имя и емайл, а потом в файле index.php искромсал блок if ( !$postdata['post_author'] ) {} таким вот варварским способом:

if ( !$postdata['post_author'] ) {
	 $postdata['post_author'] = $user_id = 4;
	    if ( $user_id ) {
				$temp_id = $_COOKIE['PHPSESSID'];
				$temps	 = get_option( 'rcl_tempgallery' );
				if ( isset( $temps[$temp_id] ) ) {
					$temp_gal		 = $temps[$temp_id];
					unset( $temps[$temp_id] );
					$temps[$user_id] = $temp_gal;
					update_option( 'rcl_tempgallery', $temps );
				}
	    }
$postdata['post_status'] = 'publish';
}
	return $postdata;
}

Понятия не имею, насколько это корректно и какие чудовищные баги могут всплыть в дальнейшем, потому что делалось это буквально методом тыка, но на данный момент работает, как ожидалось.

Андрей CS, вам большое спасибо.

0
Тема закрыта. Публикация новых сообщений запрещена.