Поддержка Проблемы и решения Можно ли как то «передавать» вывод из attachment.php на single.php так чтобы is_

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • или заставить считать что attachment == single

    Модератор Yuri

    (@yube)

    аттач не single, но singular

    is_single вроде работает на основе информации в базе данных. Тогда как на информацию в базе данных может влиять как выводится эта информация?

    В ядре
    wp-includes/template-loader.php
    обнаружился такой код

    if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) :
    	$template = false;
    	if     ( is_embed()          && $template = get_embed_template()          ) :
    	elseif ( is_404()            && $template = get_404_template()            ) :
    	elseif ( is_search()         && $template = get_search_template()         ) :
    	elseif ( is_front_page()     && $template = get_front_page_template()     ) :
    	elseif ( is_home()           && $template = get_home_template()           ) :
    	elseif ( is_post_type_archive() && $template = get_post_type_archive_template() ) :
    	elseif ( is_tax()            && $template = get_taxonomy_template()       ) :
    	elseif ( is_attachment()     && $template = get_attachment_template()     ) :
    		remove_filter('the_content', 'prepend_attachment');

    1.Это относится именно к файлам single.php attachment.phph и тд?
    2. Какой смысл со страниц вложения убирать сами вложения?
    (если закомментировать последнию строчку, то проблема разници в работе single.php и attachment.php при одинаковом коде исчезает.

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    is_single вроде работает на основе информации в базе данных. Тогда как на информацию в базе данных может влиять как выводится эта информация?

    Три раза перечитал. Не уловил в чем суть)

    Можно ли как то «передавать» вывод из attachment.php на single.php так чтобы is_single был true?

    Не знаю зачем, но, вероятно, с помощью фильтра template_include.
    Предполагаю, что примерно так:

    
    add_filter( 'template_include', 'attachment_to_single', 99 );
    function attachment_to_single( $template ) {
    	if ( is_attachment() ) {
    		if ( $new_template = locate_template( 'single.php' ) ) {
    			$template = $new_template;
    		}
    	}
    
    	return $template;
    }

    Работает на основе: WP_Query::is_single()

    т.е. это запрос в базу данных. и вытаскивание оттуда информации? или как?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    т.е. это запрос в базу данных. и вытаскивание оттуда информации? или как?

    Тип записи как и все остальные данные записей хранятся в базе данных. Поэтому на каком это из этапов загрузки страницы они в любом случае запросятся из неё.

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Можно ли как то «передавать» вывод из attachment.php на single.php так чтобы is_» закрыта для новых ответов.