Андрей CS сказал(а)
имя прикрепляется к автору публикации, а так как автора публикации нет, то нет и его имени
А весь код после строки if ( !rcl_get_option( 'user_public_access_recall' ) && !$user_ID ) { } описывает регистрацию нового пользователя, если я правильно понимаю? Возможно ли вместо этого просто публиковать посты от "анонимного автора"? В крайнем случае, создав такой профиль и присваивая его id каждому посту от анонимных юзеров, если это нельзя сделать другим способом.
ну вы же сами указали что
весь код после строки if ( !rcl_get_option( 'user_public_access_recall' ) && !$user_ID ) { } описывает регистрацию нового пользователя
вам нужно вместо этого кода написать назначение публикуемой записи за определенным пользователем, ну или если публикация на тот момент еще не опубликована, то сделать это позже, например в момент работы хука update_post_rcl
Андрей CS сказал(а)
вам нужно вместо этого кода написать назначение публикуемой записи за определенным пользователем
Я честно искал, как это сделать, но так и не нашёл: какая функция или переменная позволяет это осуществить?
Поискал информацию о 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 ) { }
Результат предсказуем (его отсутствие). В чём ошибка? Догадываюсь, что во всём. Как заставить это работать?
Всё оказалось гораздо проще.
Я полностью отключил блок 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, вам большое спасибо.