Вообщем уже весь мозг сломал. Тот вариант когда все элементарно и должно работать - но не работает.
В header.php прописываю и вывожу через
echo do_shortcode( '[first-foto_tw]' ),
тут нельзя вставить полностью.
В functions.php прописываю:
function first_foto_tww() { // 1 получение ссылки через функцию global $user_LK; $ImgTL = get_user_meta($user_LK, 'f_001_jb', 1); $image_url = wp_get_attachment_url( $ImgTL ); echo $image_url; // 2 присвоение ссылки вручную // $image_url_2 = '/wp-content/uploads/2021/03/photo1_2977.jpg'; // echo $image_url_2; } add_shortcode('first-foto_tw', 'first_foto_tww');
В итоге в коде страницы ссылку выводит одинаково, как через функцию, так и в ручную. Но телега получает картинку только когда присваиваешь вручную. Только получаешь через get_user_meta и wp_get_attachment_url - ВСЕ изображения нет.
Но самое интересное, что тот же вайбер все открывает. У одной телеги проблемы. Что это может быть?
Андрей CS сказал(а)
видимо вы пытаетесь использовать $user_LK еще до того, как она будет определена, попробуйте ее распечатать на экран, что выведет?
Вывести через var_dump - $user_LK при загрузке страницы?
echo var_dump($user_LK);
Просто шордкод прописан в header.php meta - name="og:image" content="" и на момент загрузки страницы ссылка на изображение выводиться, но в какой момент это все хочет получить телеграмм, при копировании в него ссылки это уже вопрос.
function first_foto_tww() { // // 1 получение ссылки через функцию global $user_LK; // $ImgTL = get_user_meta($user_LK, 'f_001_jb', 1); // $image_url = wp_get_attachment_url( $ImgTL ); // echo $image_url; // echo wp_get_attachment_url(get_user_meta($user_LK, 'f_001_jb', 1)); echo var_dump($user_LK); // 1 присвоение ссылки вручную // $image_url_2 = '/wp-content/uploads/2021/03/photo1_2977.jpg'; // echo $image_url_2; } add_shortcode('first-foto_tw', 'first_foto_tww');
Выводит int(54). То есть id пользователя.
Причина ИМЕННО в переменой $user_LK. Код пройден 100500 раз, да и что там проходить одна строчка.
Вот два примера.
function first_foto_tww() { global $user_LK; echo wp_get_attachment_url(get_user_meta($user_LK, 'f_001_jb', 1)); } add_shortcode('first-foto_tw', 'first_foto_tww');
Нет изображения.
Заменяем глобалку $user_LK на обычную переменную и присваиваем ей id существующего пользователя.
function first_foto_tww() { $user_IDT = 45; echo wp_get_attachment_url(get_user_meta($user_IDT, 'f_001_jb', 1)); } add_shortcode('first-foto_tw', 'first_foto_tww');
Все работает.
Дело именно в $user_LK и скорее всего в том что телеграмм при получении данных с сайта пытается взять изображение до "определения" "init" и т.д.
Есть ли возможность получить ID пользователя страницы хотя бы штатными WP средствами из базы данных, не через $user_LK если она не работает адекватно с телегой?
Как это не знаете? В header.php Внутри тега head, meta name="og:image" и "twitter:image" прописываются, как бы, только в единственном месте. Все указано в первом посте.
Если есть глюки и не доработки самого плагина в работе с телеграмом, не вопрос. Я понимаю. Плагин не стоит больших денег, случай специфический, а на поддержке как было написано раннее, на этом ресурсе, слегка так забивают. Сейчас у всех проблемы. Но так откровенно "я не я и лошадь не моя"... Хоть в какую сторону копать направили бы или платное решение?...
Вы не нервничайте, разработка любит вдумчивых.
Если после вашей проверки вы обнаружили, что переменная $user_LK определена, то я не вижу причин со стороны плагина для возникновения проблем.
Есть проблемы в вашем коде.
Контент из шорткода должен возвращаться через return, а не через echo.
Надеюсь это вам поможет.
Кроме того, раз вы пытаетесь формировать контент для вывода в хедере сайта, то вы всегда можете увидеть результат в исходном коде страницы, как я понял, туда вы еще не смотрели.
Андрей CS сказал(а)
то вы всегда можете увидеть результат в исходном коде страницы, как я понял, туда вы еще не смотрели.
Так в том то и "загадка", конечно смотрел. Код правильно отображается при нажатии на "просмотр кода страницы". Проблема в том, что он всегда одинаково отображается ПРАВИЛЬНО как при ручном присвоении Id пользователя, что при $user_LK. Но телега видит только ручное присвоении Id. Почему я и посматриваю на init.
Поменял "echo" на "return" - нечего не поменялось.
И вся проблема именно в телеге. Тот же вайбер с $user_LK работает без проблем. То есть код который не работает в телеге прекрасно работает в вайбер.
василий сказал(а)
Здравствуйте. Кроме всего прочего обратите внимание что данная переменная возвращает id пользователя только на странице ЛК. Может быть вы используете её в другом месте?
В телегу отправляю именно ссылку личного кабинета.
Что бы получить картинку телеграм у себя загружает вашу страницу и из кода берет ссылку на картинку. Если вы сами никакого кода не писали, то сайту не важно кто его открыл: вайбер, телеграм или вы через браузер.
Телеграм у вас картинки не подгружает для всех ЛК или конкретного? Может вы вставляете ссылку на юзера у которого не указана картинка, а при ручном указании значения переменной указываете другой ID пользователя, у которого есть картинка?
Так уже все смешалось кони, люди и котлеты.
Еще раз сначала и уже без шорткодов.
Есть файл header.php. Он находиться в папке темы на своем месте. Там вставляю код.
Пример 1.
В него внесен код с использованием $user_LK.
Выводит ссылку все правильно, если "посмотреть код"
meta name="og:image" content="https://адрес_сайта/wp-content/uploads/2021/03/andrej-9.jpg"
Отправляю в телегу ссылку формата
Телега не видит. Вайбер видит.
Пример 2.
Вносим код в котором меняем $user_LK на обычную переменную в которую вводим ID пользователя.
Выводит так же ссылку все правильно как и первый раз, если "посмотреть код"
meta name="og:image" content="https://адрес_сайта/wp-content/uploads/2021/03/andrej-9.jpg"
Теперь телега видит.
1. Если через шорткод, такая же картина.
2. Ситуация со ВСЕМИ личными кабинетами пользователей.
3. Картинки все на месте. (так как вайбер все показывает и видит)
4. Код из header.php в теге HEAD присутствует по любому при загрузке кабинета пользователя.
5. В телегу отправляется ссылка на кабинет пользователя
Вот такая фигня...
Первая же ссылка при гуглении этого бота.
В recall никакой проблемы нет, когда генерируется страница - она делает это одинаково не зависимо от того как она открыта. Recall не знает кто запрашивает страницу - юзер или бот или еще кто.
Preci сказал(а)
Вы не можете просматривать опубликованные ссылкиПервая же ссылка при гуглении этого бота.
В recall никакой проблемы нет, когда генерируется страница - она делает это одинаково не зависимо от того как она открыта. Recall не знает кто запрашивает страницу - юзер или бот или еще кто.
А как это связано с моей проблемой? У человека из ссылки вообще их нет. Просто у него стоит Yoast SEO, который и генерирует мета теги и соответственно он их подтягивает из главного фото статьи. А на главной нет фото, то есть в header у него пусто, и нужно прописывать в соответствии с работой Yoast SEO или зайти в плагин и установить мета для главной страницы. Поэтому отображается главная страница сайта без фото. Никак не связано с моей проблемой.
Нет фото. Используется $user_LK.
149.154.161.16 - - [03/Jun/2022:17:53:50 +0300] "GET /account/?user=13 HTTP/1.1" 200 19723 "-" "TelegramBot (like TwitterBot)"
149.154.161.16 - - [03/Jun/2022:17:53:51 +0300] "GET /account/ HTTP/1.1" 200 14342 "-" "TelegramBot (like TwitterBot)"
Есть фото, без $user_LK.
149.154.161.19 - - [03/Jun/2022:17:54:26 +0300] "GET /account/?user=13 HTTP/1.1" 200 19794 "-" "TelegramBot (like TwitterBot)"
149.154.161.19 - - [03/Jun/2022:17:54:26 +0300] "GET /account/ HTTP/1.1" 200 14339 "-" "TelegramBot (like TwitterBot)"
149.154.161.19 - - [03/Jun/2022:17:54:27 +0300] "GET /wp-content/uploads/2021/02/photo1_2640.jpg HTTP/1.1" 200 34582 "-" "TelegramBot (like TwitterBot)"
Андрей CS сказал(а)
Так бот пытается забрать изображение со страницы /account/, а это не ЛК, там $user_LK не определена.
Так уже ближе. Хотя я писал выше
===============
Отправляю в телегу ссылку формата
===============
Мои бока, я почему то решил что account это ЛК.
Вопрос, как можно передать $user_LK в страницу /account/ или вытянуть ID пользователя, в данном случае 47, из ссылки передаваемой телеге, чтобы по нему уже подтянуть фото из базы данных? Если не трудно. Я понимаю, что всех уже задолбал. )