正在输出home.php上的自定义字段,不在博客列表之外

时间:2016-12-22 作者:JSum

我不知道该怎么说,但我会试试看。如果你需要更多/更好的细节,请告诉我。

我有一个使用主页的博客列表页面。php和一个使用single的博客帖子页面。php。

这两个都应用了1个自定义字段,这是一个图像字段,用于为页面的横幅放置背景图像。还有标题字段。

在single posts页面上,当我使用自定义字段为帖子设置背景图像时,它会起作用。页面的横幅具有适当的背景图像,标题正确。

但在列表页面上,即使我在阅读设置中设置的用于承载博客列表页面的页面的标题和背景图像字段设置为特定的内容,它也会执行以下两个操作之一:

如果我没有围绕横幅设置循环,而只围绕每个博客帖子重复的代码集设置循环,则列表页面的标题和背景图像将使用该页面的最新帖子(即每页9篇帖子,总共18篇帖子,因此有两页。这些字段取每页的最新帖子)。

如果我在横幅周围设置循环,重置循环,然后在博客代码周围循环,它会很好地显示博客列表,但会重复每个博客的横幅,并且每个横幅会显示该页面上每个博客的背景图像和标题(即列表页面上的9个博客,9个横幅)。

缺少对横幅和标题的硬编码,我不知道如何将横幅分离出来,以跳出循环并提取博客页面上的数据集。

以下是网站:http://idorigin.info/blog/

这是我家的密码。php:

    <?php
    /*
    Template Name: Blog Listing Page Template
    */
    ?>

<?php get_header(); ?>
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>    
 <?php include \'banner.php\'; ?>

    <?php endwhile; else : ?>
        <p><?php _e( \'Sorry, no posts found.\' ); ?> </p>
    <?php endif; 

wp_reset_query();

?>
<section class="blog">  
    <div class="blog_list">
        <div class="page_center medium">
<?php get_header(); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 
            <div class="blog_item">
                <div class="page_center">
                            <a class="blog_item_img" style="background: url(\'<?php the_post_thumbnail_url(); ?>\') center center no-repeat;" href="<?php the_permalink(); ?>">

                    </a>
                    <div class="blog_item_info">
                        <div class="blog_item_date-topics">
                            <?php the_time(\'M d, Y\'); ?> | <?php the_category(\', \'); ?>
                        </div>
                        <div class="blog_item_title">
                            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                        </div>
                        <a class="orange_button" href="<?php the_permalink(); ?>">Read More</a>
                    </div>
                </div>
            </div>

        <?php endwhile; else : ?>
                <p><?php _e( \'Sorry, no posts found.\' ); ?> </p>
        <?php endif; ?>

        </div>

        <div class="pagination">

        <?php 
            $prev_page = get_previous_posts_page_link();
            $next_page = get_next_posts_page_link();
        ?>
        <?php if( $prev_page ) { ?>

            <a class="previous-list" href="<?php echo esc_url( $prev_page ); ?>">Previous</span>

        <?php } else { ?>

            <span class="previous-list">Previous</span>

        <?php } ?>

             | 

        <?php if ( $next_page ) {?>

            <a class="next-list" href="<?php echo esc_url( $next_page ); ?>">Next</a>

        <?php } else { ?>

            <span class="next-list">Next</span>

        <?php } ?>

        </div>

    </div>
</section>

<?php get_footer(); ?>
横幅。php文件:

<section class="page_banner inner_banner" style="background: url(<?php echo get_post_meta( $post_id , \'banner_image\', true )  ?>) center center no-repeat;">
    <div class="overlay">
        <div class="page_center large">
        <?php $blog_title = get_the_title( get_option(\'page_for_posts\', true) ); ?>
            <h1><?php echo $blog_title; ?></h1>
            <p><?php the_field(\'header_tag_line\'); ?></p>
        </div>
    </div>
</section>

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

我上面有两个相关的问题。

php the\\u title()正在我的横幅内的博客列表页面上输出最新的博客文章标题(或根据所述情况为列表页面上的每个博客标题创建横幅)。

用于将img url插入某些内联样式的背景属性的我的高级自定义字段的作用是相同的。

根据我收集的信息,这两个问题都是由于索引(博客列表)页面没有$page\\u id或类似的内容造成的。我想这是因为从技术上来说,它不是一个页面。

对于我使用的博客标题:

<?php $blog_title = get_the_title( get_option(\'page_for_posts\', true) ); ?>
<h1><?php echo $blog_title; ?></h1>
此操作检索了页面\\u for\\u posts的标题

使用高级自定义字段(或常规自定义字段?)在索引页上,相同的问题但不同的解决方案:

<?php 
$page_id = ( \'page\' == get_option( \'show_on_front\' ) ? get_option( \'page_for_posts\' ) : get_the_ID );
?>
然后

<section class="page_banner inner_banner" style="background: url(<?php the_field(\'banner_image\', $page_id); ?>) center center no-repeat;">
这起作用了。

如果有人能让我更容易理解,我会选择正确的答案。

相关推荐

如何将WordPress站点从http://myserver.example.com/blog重命名为http://myserver.example.com/somethingelse或仅重命名为ht

我跟踪了https://ubuntu.com/tutorials/install-and-configure-wordpress 在Ubuntu 20.04计算机上安装和配置wordpress。我可以访问示例站点/博客并在中管理/博客/wp管理员符合预期。我该如何更改它,以取代在/博客可以在以下网站上找到/或者只是http://myserver.example.com ?我早就料到了https://wordpress.org/support/article/changing-the-site-url/ 帮