[Работа] Вордпресс. Нужно вывести ID автора в зависимости от логина в специфическом месте.

akigleo

Постоялец
Регистрация
7 Фев 2010
Сообщения
378
Реакции
115
Есть WP версии 4.74 с темой Avada.
Установлены плагины:
Web 2.0 Directory plugin
Indeed Ultimate Membership Pro


Не выходит их подружить по одному функционалу.

С помощью первого плагина я создаю коммерческие объявления.
С помощью второго плагина- расширенный профиль пользователя. Там я вывожу регистрационные данные пользователя, его публикации и еще хочу вывести перечень объявлений именно этого пользователя. А это не выходит. Дело в том, что вывод объявлений плагина Web 2.0 Directory plugin идет по шорткоду: [webdirectory-listings author="ID" ]
Здесь «ID» это ID пользователя или автора. Ultimate Membership Pro не дает ID пользователя (хотя есть логин, e-mail) и в этом проблема.

Данную проблему можно решать допилом одного или второго плагина, или другим каким-то решением, которое я не соображу никак. В этом и нужна помощь.


Вариант 1
Объясню подробней специфику (Indeed Ultimate Membership Pro).
При формировании расширенного профиля пользователя - индивидуальной страницы (Ultimate Membership Pro / Members List Public Individual Page) во вкладке Custom Content можно выводить регистрационные поля как макросы вида:
Предустановленные:
{AVATAR_HREF}
{username}
{user_email}
{first_name}
{last_name}
{level_list}
{blogname}
{blogurl}
{IHC_SOCIAL_MEDIA_LINKS}

Пользовательские: (Custom Fields Constants)
{CUSTOM_FIELD_user_url}
{CUSTOM_FIELD_description}
{CUSTOM_FIELD_phone}
{CUSTOM_FIELD_addr1}
{CUSTOM_FIELD_addr2}
{CUSTOM_FIELD_zip}
{CUSTOM_FIELD_city}
{CUSTOM_FIELD_thestate}
{CUSTOM_FIELD_country}
{CUSTOM_FIELD_payment_select}
{CUSTOM_FIELD_ihc_country}
И т.п.
с отображением информации, которая относится к конкретному пользователю.

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

На любой другой странице я бы без труда вывел бы его функцией вида:

Код:
<?php
echo get_current_user_id();
# echo get_the_author();
# echo the_author_meta('user_login');
?>

Однако в нашем случае не выходит. Проблема в том, что индивидуальные страницы пользователя формируются на базе одной страницы с названием Visitor Inside User Page (somesite.ru/iump-visitor-inside-user-page), в которую ставлен шорткод [ihc-visitor-inside-user-page]
Соответственно у каждого пользователя URL личной страницы свой:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Поскольку создатель основной страницы Visitor Inside User Page пользователь с ID1, то и для всех сгенерированных страниц выше, если определять все способом ( echo get_current_user_id(); ) - пользователь будет иметь ID1. Если привязываться к логину, то так же не вариант.

Написал это как объяснение, почему не удается получить ID конкретного пользователя штатными средствами WP для таких уже сгенерированных индивидуальных страниц.


Соответственно нужно думать как получить ID пользователя на индивидуальной странице, где работают макросы вида: {}. А такие макросы вида {username} действует только в пределах окошка ввода Members List Public Individual Page во вкладке Custom Content.

У меня не вышло получить этот ID автора в зависимости от логина или e-mail. Вероятно придется лезть в недра плагина, а я тут не спец.





Вариант 2
У плагина Web 2.0 Directory plugin есть так же куча шорткодов по выводу данных.

Например, кроме [webdirectory-listings author="ID" ] можно использовать
[webdirectory-listings perpage="5" what_search="некое ключевое слово"]

Тоже не вариант. Беда в том, что поля логин или e-mail не участвуют в области поиска, поэтому результат поиска нулевой. На этом иссяк на идеи и решил обратиться к специалисту.


Прошу подумать сможете ли вы взяться за данную работу и сообщите идею цены в личку. Спасибо.

В принципе возможна будущем еще работа для специалиста, который поможет с дизайном.
 
Идея хорошая, но мне не хватает знаний для ее воплощения.

из плага получаете почту пользователя
Я могу ее на той странице получить в виде макроса: {user_email} и тут я не понимаю, как ее передать в код php.

вытаскиваете нативной функцией айдишник
Если рассмотреть пример:
Код:
<?php
$email = 'myemail@example.com';
$exists = email_exists( $email );
if ( $exists ) {
    echo 'That E-mail is registered to user number ' . esc_html( $exists );
} else {
    echo 'That E-mail doesn\'t belong to any registered users on this site';
}
?>
то вместо myemail@example.com я должен поставить {user_email}, но так не работает.

Я уже пробовал подобным образом добиться USER ID через функцию get_user_by:
Например,
Код:
$user = get_user_by('login', 'admin');
$user_id = $user->ID;
echo $user_id;
Возвращает 1, что верно.

Но мне нужно разные логины user1, user2 и т.п. Динамически не выходит подставлять.

То есть оптимально было бы так:
Код:
$user = get_user_by('login', '{userlogin}');
$user_id = $user->ID;
echo $user_id;

Но как реализовать не знаю. Внутри кода макрос {userlogin} не работает, а я не программист и php "знаю" очень приблизительно.
 
Назад
Сверху