PHP - Как заключить ссылку в url с условием

300
03 ноября 2017, 11:54

В шапке сайта выводится изображение сайта (header_image): на главной странице, в категориях и страницах статей. Нужно указать, чтобы на страницах статей выводилось изображение статьи, а не header_image. С условием, если у статьи имеется изображение, а если не имеется, то header_image.

Код вывода по умолчанию такой:

if ( ! function_exists( 'oblique_header_style' ) ) :
    /**
     * Styles the header image and text displayed on the blog
     *
     * @see oblique_custom_header_setup().
     */
    function oblique_header_style() {
        if ( get_header_image() ) {
            ?>
            <style type="text/css">
                    .site-header {
                        background: url(<?php echo get_header_image(); ?>) no-repeat;
                        background-position: center top;
                        background-attachment: fixed;
                        background-size: cover;
                    }
        </style>
        <?php
        }
    }
endif; // oblique_header_style

И нужно как-то встроить в background url примерно следующий код:

    <?php if ( has_post_thumbnail() && ( get_theme_mod( 'post_feat_image' ) != 1 ) ) : ?>
    <div class="single-thumb">
        <?php the_post_thumbnail( 'oblique-single-thumb' ); ?>
    </div>  
<?php endif; ?>     

Пробовал сделать так:

            if ( get_header_image() && is_home() || is_archive() || is_search() ) {
            ?>
            <style type="text/css">
                    .site-header {
                        background: url(<?php echo get_header_image(); ?>) no-repeat;
                        background-position: center top;
                        background-attachment: fixed;
                        background-size: cover;
                    }
        </style>
        <?php
        } elseif ( get_header_image() && is_single() )  { ?>
                <style type="text/css">
                    .site-header {
                        background: url(<?php echo the_post_thumbnail( 'oblique-single-thumb' ); ?>) no-repeat;
                        background-position: center top;
                        background-attachment: fixed;
                        background-size: cover;
                    }
        </style>
        <?php
    }
    }
endif; // oblique_header_style

Но в таком виде на главной странице и категориях все остается по-прежнему. А на страницах статей вместо бэкграунда темный блок, будто не находит фото.

Как это правильно сделать?

Answer 1

Вот так попробуйте:

if ( ! function_exists( 'oblique_header_style' ) ) :
    /**
     * Styles the header image and text displayed on the blog
     *
     * @see oblique_custom_header_setup().
     */
    function oblique_header_style() {
        if ( is_single() && has_post_thumbnail() ) {
            $img = get_the_post_thumbnail_url( null, 'oblique-single-thumb' );
        } else {
            $img = get_header_image();
        }
        ?>
        <style type="text/css">
            .site-header {
                background: url(<?php echo $img; ?>) no-repeat;
                background-position: center top;
                background-attachment: fixed;
                background-size: cover;
            }
        </style>
        <?php
    }
endif; // oblique_header_style
READ ALSO
Cинхронизация процессов в библиотеке Workerman

Cинхронизация процессов в библиотеке Workerman

При написании websocket сервера при помощи библиотеки Workerman, если пользователи подключены к разным процессам сервера - они друг-друга не видятТо-есть...

304
Вывести всё время в сутках

Вывести всё время в сутках

Надо вывести время в формате 23:41, я это сделал, как можно упростить код?

306
Как правильно создавать ЧПУ для товаров?

Как правильно создавать ЧПУ для товаров?

Всем приветСкажите, пожалуйста, как правильно создавать похожие ЧПУ: site

327
API расписания на PHP

API расписания на PHP

Нужен совет по разработке типа API для сайта квестов

355