Как передать идентификатор сообщения в функцию Twig / Timber, например edit_post_link?
Чтение документов в https://timber.github.io/docs/guides/functions/#function-with-arguments
Функция типа edit_post_link попытается угадатьИдентификатор поста, который вы хотите отредактировать из текущего поста в Цикле.эта же функция требует некоторой модификации в файле, например archive.twig или index.twig.Там вам нужно будет явно передать идентификатор сообщения.
И вот что происходит;когда я использую это
{{ function('edit_post_link', 'Edit', '<span class="edit-link">', '</span>', post.ID) }}
в index.twig
, все ссылки редактирования имеют идентификатор поста страницы, который отображает цикл пользовательских типов постов, а не идентификатор поста каждого из них.Пользовательский тип записи, который находится в цикле.
Я использую функцию ниже в файле functions.php, которая также вызывает target="_blank"
для ссылок редактирования:
add_filter( 'edit_post_link', 'newwindow_edit_post_link', 10, 3 );
global $post;
$post_id = $post->ID;
function newwindow_edit_post_link( $link, $post_id, $text ) {
if( !is_admin() )
$link = str_replace( '<a ', '<a target="_blank" ', $link );
return $link;
}
Этоосновной цикл на index.twig
."people" - это стандартный пользовательский тип записи WordPress:
{% if people %}
{% for person in people %}
<a href="{{ person.link }}">{{ person.name }}</a>
{{ function('edit_post_link', 'Edit', '<span class="edit-link">', '</span>', post.ID) }}
{% endfor %}
{% else %}
{% endif %}
, что приводит ко всем ссылкам редактирования, указывающим на эту страницу, а не к каждому пользовательскому типу записи "person".
Так какпозвонить по идентификатору записи?Нужно ли вызывать идентификатор записи в пользовательской функции типа сообщения?
Основной файл index.php имеет стандартные функции Twig:
$context = Timber::get_context();
$context['posts'] = Timber::get_posts();
$templates = array( 'index.twig' );
Timber::render( $templates, $context );