Столкнулся со следующим багом: если выставить по умолчанию вкладку Публикации, то при переходе в профиль пользователя author/user12/ ничего не отображается. Если затем кликнуть на вкладку Публикации (author/user12/?tab=publics), то появится надпись: Публикации пока не было опубликовано.
Вопрос: как сделать, чтобы при переходе в профиль пользователя выводился определенный контент (хотя бы тот же текст Публикации пока не было опубликовано), если у этого пользователя еще нет ни одной записи, но так, чтобы не приходилось еще раз кликать на вкладку Публикации.
И какой файл нужно перенести и куда (wp-content/wp-recall/...) для последующей правки, чтобы будущие обновления не затерли?
Не могу повторить.
Поставил вкладку эту первой в менеджере вкладок
Перехожу в свой ЛК мой-сайт/author/wawan/
- вижу публикации
Захожу в кабинет юзера у которого публикаций нет:
Что не так? Давайте ссылку на проблему, давайте скрины общих настроек плагина
И какой файл нужно перенести и куда (wp-content/wp-recall/...) для последующей правки, чтобы будущие обновления не затерли?
- какой и куда? А для чего? - в вашем вопросе нет конкретики. Или мне кажется что я на ваш вопрос уже отвечал
??
Не стоит в одной теме смешивать баг - его в ней и будем разбирать и еще вопрос по настройке. На каждый вопрос свою тему на форуме создавайте.
Проблема заключается, что я полностью кастомизировал файл posts-list.php. Оставил такой код:
<?php global $post,$posts,$ratings; ?>
<div class="publics-table-rcl rcl-form">
<?php foreach($posts as $postdata){ ?>
<?php foreach($postdata as $post){ setup_postdata($post); ?>
<?php if($post->post_status=='pending') $status = '<span class="status-pending">'.__('to be approved','wp-recall').'</span>';
elseif($post->post_status=='trash') $status = '<span class="status-pending">'.__('deleted','wp-recall').'</span>';
elseif($post->post_status=='draft') $status = '<span class="status-draft">'.__('draft','wp-recall').'</span>';
else $status = '<span class="status-publish">'.__('published','wp-recall').'</span>'; ?>
<tr>
<div id="post-<?php the_ID(); ?>" <?php post_class('post'); ?>>
Здесь вывод записей...
</div><!-- /.post -->
</tr>
<?php } ?>
<?php } ?>
</div>
А вот что скопировать из оригинального posts-list.php, когда нет записей - не пойму 🙁
Опытным путем выяснил, что проблема заключалась в следующем: если стоит по умолчанию вкладка Публикации и нет других публичных вкладок, то тогда ничего выводится. Если добавить еще вкладку, тогда прекрасно выводится: Публикации пока не было опубликовано. Так что, видимо, это все таки баг.
bek сказал(а)
Если перенести class-rcl-post-list.php в папку wp-content/wp-recall/add-on/publicpost/classes/ и там править - так сработает?
Не сработало. Вопрос остается открытым: где я могу отредактировать/заменить вывод заглушки Публикации пока не было опубликовано так, чтобы будущие обновления не затерли?
ПС А вообще, конечно, логично и правильнее сделать в самом файле posts-list.php вывод заглушки, когда нет записей.
bek сказал(а)
Если перенести class-rcl-post-list.php в папку wp-content/wp-recall/add-on/publicpost/classes/ и там править - так сработает?
нет. Это не шаблон WP-Recall. Это класс php. Все шаблоны описаны тут
Вопрос остается открытым: где я могу отредактировать/заменить вывод заглушки Публикации пока не было опубликовано так, чтобы будущие обновления не затерли?
Я давал вам ответ выше. Только тут wp-recall/add-on/publicpost/classes/class-rcl-post-list.php
или используя замену и компиляцию в языковом файле. Но как это сделать - вам не подскажу.
ПС А вообще, конечно, логично и правильнее сделать в самом файле posts-list.php вывод заглушки, когда нет записей.
- он выводит именно список записей. Делать шаблон на одну фразу - это бред.
Чем вас не устраивает фраза?
Только тут wp-recall/add-on/publicpost/classes/class-rcl-post-list.php
или используя замену и компиляцию в языковом файле. Но как это сделать - вам не подскажу.
Т.е. получается я никак не могу заменить текст на свой, чтобы он затерся при обновлении. Это плохо. Я, к примеру, хотел вместо текста ссылку сделать на форму публикации.
он выводит именно список записей. Делать шаблон на одну фразу - это бред.
Чем вас не устраивает фраза?
Ну archive.php тоже выводит список записей, и там есть возможность задать свой код, если нет записей. И зачем делать отдельный шаблон, если можно всунуть <?php else : ?>
<div>Нет записей</div>
. Да и к примеру, если я хочу именно уникальный текст для списка записей, как мне быть? Походу никак 🙁
Ну archive.php тоже выводит список записей, и там есть возможность задать свой код, если нет записей.
А теперь представьте что у вас ВП тема стоит и вы к ней скачали дочернюю тему. Как вы в archive.php поменяете фразу тогда?
Вы оглядитесь по сторонам - в других больших плагинах вы тоже столкнетесь с тем, что вы не сможете заменить текст. Нельзя на каждую фразу делать свой фильтр или шаблон. Их в плагине 1200 строк. Это не разумно
Пробуйте изменять через файлы перевода. Вроде есть плагины которые позволяют менять текст любой на свой
bek сказал(а)
Т.е. получается я никак не могу заменить текст на свой, чтобы он затерся при обновлении. Это плохо. Я, к примеру, хотел вместо текста ссылку сделать на форму публикации.
В общем я вас ввел в заблуждение несколько... Ну про плагины переводов я был прав. Но еще в ядре ВП есть фильтр gettext
function otfm_retranslate_empty_postlist( $translation, $text, $domain ){ if($domain !== 'wp-recall') return $translation; if($translation === 'пока не было опубликовано') return '- пока не было опубликовано. <a href="ссылка">Опубликовать запись!</a>'; return $translation; } add_filter( 'gettext', 'otfm_retranslate_empty_postlist', 10000, 3 );
Функция работает
Только в общих настройках реколл (включить расширенные опции) - надо убедиться что реколл кеширование отключено. Я запамятовал и полчаса бился с "ветряными мельницами" ((
Также есть глобальная переменная в вордпресс global $l10n;
- в ней содержится объект переводов. Можно и напрямую в нем заменить то что надо
Например так:
$l10n['wp-recall']->entries['has not yet been published']->translations[0] = 'пока не было опубликовано <a href="">Опубликовать запись</a>';
но это несколько костыльный метод. Лучше использовать доступ через специальный ВП фильтр.
Так что ваша задача решается средствами самого вордпресса.
Otshelnik-Fm, большое спасибо за помощь, почти идеально!
А как убрать слово Публикации, просто оставить
?
Потому как такой код не срабаотывает:
if($translation === 'Публикации пока не было опубликовано') return '<a href="ссылка">Опубликовать запись!</a>';