使用博客档案页面的特色图片

时间:2019-04-22 作者:RLM

在我的自定义wordpress主题中,我使用我所有页面的特色图像缩略图作为页面的标题。

我创建了一个名为“博客”的页面,并将其用作存档(通过设置->阅读->选择“博客”作为帖子显示页面)阅读,但当我尝试使用该页面的特色图像时,它会尝试显示博客中的所有特色图像,而不仅仅是我想要的一个存档页面。

我很确定这是一个修改if语句的问题,只显示归档页面的拇指,但我不确定如何修改。

这是我的密码index.php

<?php get_header(); ?>
        <section>
            <?php if ( have_posts()) : while ( have_posts() ) : the_post(); ?>
            <!-- post thumbnail -->
            <?php if ( has_post_thumbnail()) : // Check if Thumbnail exists ?>
            <?php $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) ); ?>
                <a class="page-thumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                    <div class="page-thumb" style="background-image:url(\'<?php echo $url ?>\');"></div>
                </a>
            <?php endif; ?>
            <!-- article -->
                <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                    <h1 class="page-h1 animate-reveal">
                        <?php the_title(); ?>
                    </h1>

                </article>
            <!-- /article -->

            <?php endwhile; ?>
            <?php else : ?>
            <!-- article -->
            <!-- /article -->
            <?php endif; ?>

        </section>
    <main role="main" aria-label="Content" class="page-bg page-margin">
        <!-- section -->
        <section>

            <h1 class="archive-h1">News</h1>

            <?php get_template_part( \'loop\' ); ?>

            <?php get_template_part( \'pagination\' ); ?>

        </section>
        <!-- /section -->
    </main>


<?php get_footer(); ?>
使用答案#1进行编辑

完成索引。下面的php文件

 <?php get_header(); ?>

    <main role="main" aria-label="Content" class="page-bg page-margin">



        <!-- section -->
        <section>
            <?php 
                $page_for_posts = get_option( \'page_for_posts\' ); 
                if ($page_for_posts && has_post_thumbnail($page_for_posts)) {
                    $thumb_id = get_post_thumbnail_id( $page_for_posts);
                    $url = wp_get_attachment_url( $thumb_id );
                if ( have_posts()) : while ( have_posts() ) : the_post(); ?>
            <!-- post thumbnail -->
            <?php if ( has_post_thumbnail()) : // Check if Thumbnail exists ?>
            <?php $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) ); ?>
                <a class="page-thumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                    <div class="page-thumb" style="background-image:url(\'<?php echo $url ?>\');"></div>
                </a>
            <?php endif; ?>
            <!-- article -->
                <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                    <h1 class="page-h1 animate-reveal">
                        <?php the_title(); ?>
                    </h1>

                </article>
            <!-- /article -->

            <?php endwhile; ?>
            <?php else : ?>
            <!-- article -->
            <!-- /article -->
            <?php endif; ?>

        <?php } ?>
            <h1 class="archive-h1">News</h1>

            <?php get_template_part( \'loop\' ); ?>

            <?php get_template_part( \'pagination\' ); ?>

        </section>
        <!-- /section -->
    </main>


<?php get_footer(); ?>

1 个回复
最合适的回答,由SO网友:Michelle 整理而成

您需要在“设置”>“阅读”中获取已设置为帖子页面的页面ID,以便访问其属性。为此,请检查page\\u for\\u posts选项,该选项返回ID:

$page_for_posts = get_option( \'page_for_posts\' ); 
if ($page_for_posts && has_post_thumbnail($page_for_posts) {
    $thumb_id = get_post_thumbnail_id( $page_for_posts);
    $url = wp_get_attachment_url( $thumb_id );
    //... the rest of your featured image display stuff here
}
此代码应放在索引之外(之前)。显示所有博客帖子的php循环;他们的特色图片,它不能取代它。

你可以用这个$page_for_posts ID显示该页面的其他元素,包括标题,例如:echo get_the_title($page_for_posts);

编辑:

尝试使用此索引。php;我假设您的实际posts循环位于“循环”模板部分内。这只会将<img> 在贴子页面顶部标记该页面的特色图像。

<?php get_header(); ?>

    <main role="main" aria-label="Content" class="page-bg page-margin">

        <!-- section -->
        <section>

        <?php 
        // Get the ID of the page set to Display Posts in Settings > Reading
        $page_for_posts = get_option( \'page_for_posts\' ); 

        // If that page ID exists, and that page has a Featured Image....
        if ($page_for_posts && has_post_thumbnail($page_for_posts)) {

            // Get the ID of that page\'s Featured Image
            $thumb_id = get_post_thumbnail_id( $page_for_posts);

            // Display that image
            echo wp_get_attachment_image($thumb_id);
        } 

        // Display the page title if set; else use \'News\'              
        if ($page_for_posts) {
          echo \'<h1 class="archive-h1">\' . get_the_title($page_for_posts) . \'</h1>\';
        } else {
          echo \'<h1 class="archive-h1">News</h1>\';
        }
        ?>

            <?php get_template_part( \'loop\' ); ?>

            <?php get_template_part( \'pagination\' ); ?>

        </section>
        <!-- /section -->
    </main>


<?php get_footer(); ?>
我使用此功能输出该特征图像:wp_get_attachment_image() 该函数将输出<img> 使用scrset属性标记响应图像。如果您希望将页面的特色图像显示为背景图像,您仍然可以使用wp_get_attachment_url() 只需获取URL并使用<div> 要显示它,请执行以下操作:

<?php $url = wp_get_attachment_url($thumb_id); ?>
<div class="page-thumb" style="background-image:url(\'<?php echo $url ?>\');"></div>

相关推荐

用于通过html表单插入数据的php文件的路径

我有一个HTML表单,可以将数据插入到自定义表中。用于插入数据的代码位于PHP文件中。我的问题是,在WordPress文件系统中,PHP文件应该放在哪里?我尝试将文件放在根目录中,但不起作用。将其放在wp-content/themes/mytheme文件夹中。不起作用。找不到错误页。<form id=\"XXXForm\" method=\"POST\" action=\"/xxx_insert.php\"> 非常感谢您的帮助。大卫