Добрый день.
Если перейти на стандартную (для WP) страницу "Блог" (лента записей), то значок (ссылка) "Редактировать" для каждой записи ведет на редактирование исключительно последней записи.
Кнопка "Редактировать" принадлежит WP Recall.
Где в коде можно поправить этот момент, чтобы кнопка "Редактировать" у каждой записи вела к редактированию именно этой записи?
Спасибо.
Какой именно код выводит ленту записей? Что бы корректно выводилась ссылка на редактирование, в цикле вывода записей должна быть установлена глобальная переменная $post, из нее берется id поста и формируется ссылка на редактирование.
Ну кнопку редактирования выводит /wp-content/plugins/wp-recall/add-on/publicpost/index.php:247-285
get_edit_post_link( $post->ID )
Если у вас ссылка выводится на одну и ту же запись, значит в цикле вывода записей не устанавливается глобальная переменная $post с текущим постом. Надо смотреть как это у вас реализовано и от этого отталкиваться
Ну так вы сами написали что ссылка выводится, но всегда веден на одну и ту же запись.
Я вам показал как эта ссылка формируется. Это стандартная функция wordpress.
Что бы знать какую ссылку выводить, надо знать какой на данный момент пост обрабатывается, для этого в темах wordpress во время цикла вывода записей устанавливают глобальную переменную, в которую записывают данные обрабатываемого в данный момент поста.
Из этого следует что на 99.99% проблема в вашей теме. Смотрите код вывода записей в шаблоне для проблемной странице. Там должно быть упоминание setup_postdata() или the_post()
Ситуация интереснее.
На первой странице ленты блога при наведении на кнопку редактирования ссылка ведёт на редактирование последнего поста этой страницы блога. То есть условно 10 записей и у всех кнопка редактирования (из блога) ведёт на редактирование последней записи этой страницы блога.
Для каждой страницы блога - своя ссылка. Если страниц 5, то кнопка редактирования (на странице блога) каждых 10 записей ведет на только на 1 из этих 10 страниц (последнюю).
Вообщем ради вас я просмотрел весь код и все дело в том, что на странице категории кнопка редактирования и не должна выводиться. Видимо вы там выводите весь контент поста через the_content() или сами как-то добавили вывод это кнопки. Обычно на странице категории выводится the_excerpt() или аналоги.
так что тут либо править ядро, либо Андрей внесет изменения.
А вообще ссылку на редактирование внутри цикла можно получить так:
get_edit_post_link( $post->ID )
p.s. Андрей, что за экш такой? Фильтр же?
add_action( 'the_content', 'rcl_post_bar', 999 );
Это стандартная лента записей. По умолчанию она выводится на главной страницу. Но в настройках WP можно указать для нее любую другую пустую страницу. Когда записи выводятся на главной, то возможности редактирования записей (кнопки около каждой записи) - нет. Если на любой другой странице выводишь ленту - то кнопка редактирования появляется около любой записи.
Ошибка именно с ссылкой формата rcl-postedit, то есть WP Recall здесь точно участвует.
т.е. вы в wordpress в Настройки->Чтение в опции "На главной странице отображать" указали:
Статическую страницу и выбрали в выпадающем меню Страница записей какую-то страницу. И тогда если перейти на страницу которую вы выбрали, то там выводятся кнопки редактирования?
Я так сделал и у меня не появились кнопки.
Otshelnik-Fm сказал(а)
Если бы вы дали по шагам как повторить этот баг - вопрос решился быстрей. Если вы на разных пк и темах проверяли - значит уже у вас есть план проверки. А нам остается только гадать.
Проблема если на странице категории контент выводится через the_content(); как в теме Twenty Fourteen, там по хорошему вообще надо переписать функцию которая устанавливает post_bar, ибо она делает это через глобальную переменную $rcl_post_bar и получается что в нее на странице категории записывается только 1 пост.
Ну или вообще как в закладках сделать проверку одиночная запись или нет, ибо закладки в категориях не выводятся даже если там используется the_content();
Но мне кажется надо отказываться от глобальной переменной $rcl_post_bar