Привет, ребята, я не мог найти ничего в Интернете. Возможно ли иметь собственный шаблон для страницы с прикрепленным изображением. Интересно, можно ли добавить навигацию на страницу вложения изображения, чтобы люди могли легко перемещаться по галерее.
Может быть, даже можно добавлять комментарии к каждому изображению?
edit: Кроме того, можно также запросить, нахожусь ли я в настоящее время на странице вложения? Например, для хлебных крошек я хочу вставить что-то вроде «домой > вернуться к сообщению > current_image.jpg»
изменить/обновить:
function breadcrumbs() {
if (!is_home()) {
echo "<a href='" . get_bloginfo('home') . "' title='Home'>Home</a> ⟩ ";
if (is_category()) {
$category = get_the_category();
echo $category[0]->cat_name;
} else if (is_single()) {
the_category('title_li=');
echo " ⟩ ";
the_title();
} else if (is_page()) {
$ancestors = get_post_ancestors($post);
// echo ancestors
foreach($ancestors as $id) {
echo "<a href='" . get_permalink( $id ) . "' title='" . get_the_title( $id ) . "'>" . get_the_title( $id ) . "</a> ⟩ ";
}
} else if (is_tag()) {
global $wp_query;
$tag = get_term( $wp_query->queried_object_id, 'post_tag');
echo "Tag ⟩ " . $tag->name;
} else if (is_search()) {
echo " Searchresults ⟩ " . get_search_query();
} else if (is_404()) {
echo "Not found";
//} else if ( is_attachment() ) {
} else if ($post->post_type == 'attachment') {
//echo "<a href='" . get_permalink() . "'>" . get_the_title() . "</a>";
echo "doesn't work?";
}
}
}
WordPress поддерживает несколько типов шаблонов вложений. Функция
get_attachment_template
inwp-includes/theme.php
обеспечивает эту поддержку; он вызываетсяwp-includes/template-redirect.php
. Если ваша тема включает в себяattachment.php
все ваши вложения, они будут отображаться с этим шаблоном. Если ваша тема также включает в себяimage.php
, то все ваши изображения будут использовать этот шаблон, если они имеют post_mime_typeimage/*
.Конечно, можно добавить навигацию по галерее. Посмотрите
wp-content/themes/twentyten/loop-attachment.php
, какие из них используют функцииprevious_image_link
иnext_image_link
.Шаблон вложения Twentyten вызывает,
comments_template
поэтому вы можете собирать комментарии к каждой фотографии. Вам просто нужно убедиться, что ваш пост ссылается на страницы вложений, а не прямо на изображения.Вы можете позвонить
is_attachment
, чтобы определить, является ли запрошенный объект вложением.спасибо, я обновил свой пост. Сейчас я использую двадцать десять шаблонов и постараюсь адаптировать их к своим потребностям. Во всяком случае, единственное, что я не могу понять, это как заставить мои хлебные крошки работать так, чтобы они показывали
home > current post title as link > current image
Создание ссылок для навигации по галерее (используя миниатюры) не представляет сложности. Посмотрите
attachment-loop.php
в TwentyTen. Кроме того, есть ли причина не использоватьis_attachment()
, а не$post->post_type == 'attachment'
?@Чип и @Энди — Нет, ни за что. Мне никогда не приходилось использовать
is_attachment()
условное выражение, но вы правы, это лучший подход. Он должен быть доступен гораздо раньше, тогда как$post->post_type
доступен только в цикле.Краткий ответ — Да.
Вложения обслуживаются файлами шаблонов на основе их MIME-типа, поэтому, если ваше вложение представляет собой, например, изображение или jpg, WordPress сначала будет искать файл шаблона с именем image.php, затем jpg.php и, наконец, вложение.php, прежде чем вернуться к другому файлу шаблона (single.php или index.php). На странице Кодекса есть хорошая диаграмма, показывающая иерархию шаблонов.
Это работает, только если вы получаете доступ к вложению через структуру перезаписи WP (т.е. когда вы вставляете изображение, выбирая вариант «ссылка на публикацию», а не «ссылка на файл». URL-адрес должен выглядеть примерно так: domain.com/post -name/attachment-name… Прямой доступ к URL-адресу файла обходит храмовую систему WordPress.
И, если вы хотите проверить, находитесь ли вы на странице вложений, вы всегда можете проверить тип сообщения, т.е.
Конечно, в шаблоне attachment.php нет необходимости проверять это — вы уже знаете, что находитесь на странице вложений.