Аватар автора как миниатюра поста
-
То ли лыжи, то ли мороз, но никак не соображу как присвоить аватар автора поста как миниатюру этого поста.
При публикации/апдейте ну и старым постам тоже надо бы присвоить.
Как/чем это можно сделать?Аватар локальный, если что.
-
*напевает* Ой, мороз, мороз… 🙂
Не проще ли в шаблоне заменить вывод миниатюры на вывод аватара автора?
Не проще ли в шаблоне заменить вывод миниатюры на вывод аватара автора?
Оно с одной стороны проще (технически), но тут фишка такая, что миниатюра может использоваться в разных местах (портальная морда с кучей разных блоков и слайдером постов напр.) и в плагинах (ну хотя бы типа похожие записи).
И хочется по уму сделать. Логичней же присвоить миниатюру посту. Но доверять делать это авторами никак низзя ;).Логичней же присвоить миниатюру посту.
Да, но в таком случае что будет, если юзер сменит аватар? Теоретически может быть ситуация, когда у каждого поста юзера будет свой аватар, а это значит, что миниатюра-аватар как визуальный маркер автора (привычная для форумов функция аватара) работать уже не будет. Значит — подстановка на выводе?
Да, но в таком случае что будет, если юзер сменит аватар?
Хм. да, теоретически тут могут возникнуть проблемы.
В идеале конечно лучше бы тогда сразу и на это событие повесить обновление миниатюры «своих» постов.
Хотя в данном случае это не особо важно. Это достаточно редкое событие (раз в неск лет может и случится). И без ведома админа юзер не сменит аву. Точнее админ буде оповещён об этом. И тогда он (админ) сможет перегенерировать миниатюры.
Да и по большому счёту не особо критично, если в старых постах будут использоваться старые миниатюры-аватары.Значит — подстановка на выводе?
Вывести в теме аву вместо тумбы конечно же проще, но вот как быть с кучкой плагинов? Переписывать? Откровенно говоря тут нет ни желания ни бюджета ни целесообразности (обновления ж).
Мне всё же кажется, что лучше в ручном режиме («по кнопке») или как вариант по крону обновить/добавить миниатюры автора(ов).
Зачем «по кнопке»? Можно повесить обработчик на хук ‘transition_post_status’ и по условию
if ('publish' == $new_status)
(говорят, это надежней, чем просто на ‘publish_post’) запускать процедуру привязки миниатюры. Если речь только о локальных аватарах и если они хранятся в медиатеке как и прочие картинки, то достаточно просто присвоить постмета_thumbnail_id
. Если нет, то придется делать еще и загрузку картинки в медиатеку.Можно повесить обработчик на хук ‘transition_post_status’
Вот тут у меня пробелы :(. Ну т.е. читая чужой код я вроде понимаю как и для чего там хуки, с «популярными» тоже особых проблем нет, но вот как узнать нужные (не популярные) и как правильно использовать — тут я плаваю. 🙁
Сособно, наверное потому и прошу помощи.то достаточно просто присвоить постмета _thumbnail_id
ну вот собно я это и хочу сделать. Только не соображу как получить аву автора наиболее простым способом. В голову приходят только сложные циклы-проверки, но чую должен быть нормальный способ.
Если нет, то придется делать еще и загрузку картинки в медиатеку.
Будем считать, что они уже есть в медиатеке. Ну т.е. предварительно будут загружаться в редакторе профиля юзера. (тоже история с импортом юзеров с авами не радует, но костыльно решаемо. Благо это одноразовая процедура.)
как получить аву автора
Увы, тут я сильно помочь не могу, ибо не знаю, как и чем формируете локальные аватары.
Будем считать, что они уже есть в медиатеке. Ну т.е. предварительно будут загружаться в редакторе профиля юзера.
Если эта часть подконтрольна Вам, то загружая в медиатеку, сразу формируйте для этого юзера user_meta с id картинки. Тогда при публикации поста сможете легко получить id картинки по id автора и затолкать в post_meta _thumbnail_id поста.
Как-то так
add_action( 'publish_post', 'my_add_post_thumb', 10, 2 ); function my_add_post_thumb($post_id, $post) { $thumb_id = get_user_meta( $post->post_author, '_avatar_id', true ); update_post_meta( $post_id, '_thumbnail_id', $thumb_id ); }
ибо не знаю, как и чем формируете локальные аватары.
Ава хранится в _usermeta в meta_key аля
user_avatar -> 288
(288=ID медиафайла).Я тут поэкспериментировал и.. ещё больше запутался с эти авами. У меня появилось ощущение, что ВП реагирует на название поля (в _usermeta) с вхождениями «ava», «picher» и тп. Потому что куда бы и как бы не вписал аву — она в большинстве случаев распознаются и показывается в таблице юзеров и понимается get_avatar_data и производными функциями.
Как-то так
О, спс. Кацца то, что нужно.
Вместо
update_post_meta
использовалset_post_thumbnail
Спасибо ещё раз.
Ксати, попался интересный плагинчик https://wordpress.org/plugins/add-actions-and-filters/. Для быстрых экспериментов весьма приятно.
- Тема «Аватар автора как миниатюра поста» закрыта для новых ответов.