Intereting Posts
Как запретить авторам редактировать свой почтовый индекс? Как применить пользовательский скин к WP_Editor / TinyMCE? Новый WP_Query вызывает фильтр Pre_get_posts дважды Получить идентификатор сообщения из URL-адреса запроса Получите содержание страницы, не создавая HTML Два цвета в одном заголовке Запрошенные сообщения, неверно отображающие архивы тегов Эффективный способ обновления нескольких метаданных Ограничить определенные действия только для страниц меню только для плагина Как не показывать post_thumbnail из определенной категории для не зарегистрированных пользователей Пользователь вышел из системы после перехода на https Как назначить настраиваемый шаблон для страницы «Объявления» (в разделе «Настройки отображения главной страницы») установить термины в категорию и подкатегорию Ajax для не зарегистрированных пользователей Изменить текст «Моя корзина» в теме woocommerce artificer

получить сообщение об авторе id out loop

Мне нужно разместить в метадаре панели сообщений post edit с почтовым электронным письмом (или другими полями метаданных пользователя). Поэтому его можно отредактировать, когда администратор просмотрит этот пост.

$meta_id = get_the_author_meta( 'user_email', $user_id ); $meta_box = array( 'id' => 'my-meta-box', 'title' => 'DANE FIRMY', 'page' => 'post', 'context' => 'normal', 'priority' => 'high', 'fields' => array( array( 'name' => 'E-mail box', 'id' => 'mail', 'type' => 'text', 'std' => $meta_id ) ) ); 

Этот код работает, когда $ user_id является целым числом (когда я вручную кладу туда, например, 4), но я хочу динамически получить текущий идентификатор автора ( $user_id ).

get_the_author_meta('user_mail') должен работать без указания $user_id (codex говорит, что :)), но код находится в functions.php и вне цикла, поэтому он не работает. Я начинаю с WordPress и PHP, поэтому я не знаю, что делать дальше.

Также попробовал это:

 global $post; $user_id=$post->post_author; 

Solutions Collecting From Web of "получить сообщение об авторе id out loop"

Самый простой способ – использовать get_post_field() :

 $post_author_id = get_post_field( 'post_author', $post_id ); 

Для получения дополнительной информации по этой проблеме: посмотрите на этот ответ StackOverflow .

Вы можете использовать следующее:

 /** * Gets the author of the specified post. Can also be used inside the loop * to get the ID of the author of the current post, by not passing a post ID. * Outside the loop you must pass a post ID. * * @param int $post_id ID of post * @return int ID of post author */ function wpse119881_get_author( $post_id = 0 ){ $post = get_post( $post_id ); return $post->post_author; } 
 add_action( 'edit_form_after_title', 'myprefix_edit_form_after_title' ); function myprefix_edit_form_after_title() { global $post; $author_id=$post->post_author; $authord = get_the_author_meta( 'user_email', $author_id); echo $authord; } 

С помощью этой функции я смог отобразить сообщение автора сообщения в окне редактирования сообщений. Все еще не знаю, как заставить его работать с настраиваемым мета-полем, но я думаю, что теперь я ближе.