【问题标题】:Wordpress underscores base theme won't show featured imagesWordpress 强调基本主题不会显示特色图片
【发布时间】:2014-02-20 13:57:50
【问题描述】:

我想在将来使用下划线来构建主题。我试图在 content-page.php 中建立帖子列表,并注意到没有添加特色图片行。我想让我的特色图片显示在标题等下方。

我从 function.php 中的部分删除了 cmets,它确保支持特色图像;

      <?php
/**
 * Sophie functions and definitions
 *
 * @package Sophie
 */

/**
 * Set the content width based on the theme's design and stylesheet.
 */
if ( ! isset( $content_width ) ) {
    $content_width = 640; /* pixels */
}


if ( ! function_exists( 'sophie_setup' ) ) :
/**
 * Sets up theme defaults and registers support for various WordPress features.
 *
 * Note that this function is hooked into the after_setup_theme hook, which
 * runs before the init hook. The init hook is too late for some features, such
 * as indicating support for post thumbnails.
 */
function sophie_setup() {

    /*
     * Make theme available for translation.
     * Translations can be filed in the /languages/ directory.
     * If you're building a theme based on Sophie, use a find and replace
     * to change 'sophie' to the name of your theme in all the template files
     */
    load_theme_textdomain( 'sophie', get_template_directory() . '/languages' );

    // Add default posts and comments RSS feed links to head.
    add_theme_support( 'automatic-feed-links' );

    /*
     * Enable support for Post Thumbnails on posts and pages.
     *
     * @link http://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails
     */
    add_theme_support( 'post-thumbnails' );


    // This theme uses wp_nav_menu() in one location.
    register_nav_menus( array(
        'primary' => __( 'Primary Menu', 'sophie' ),
    ) );

    // Enable support for Post Formats.
    add_theme_support( 'post-formats', array( 'aside', 'image', 'video', 'quote', 'link' ) );

    // Setup the WordPress core custom background feature.
    add_theme_support( 'custom-background', apply_filters( 'sophie_custom_background_args', array(
        'default-color' => 'ffffff',
        'default-image' => '',
    ) ) );

    // Enable support for HTML5 markup.
    add_theme_support( 'html5', array( 'comment-list', 'search-form', 'comment-form', ) );
}
endif; // sophie_setup
add_action( 'after_setup_theme', 'sophie_setup' );

/**
 * Register widgetized area and update sidebar with default widgets.
 */
function sophie_widgets_init() {
    register_sidebar( array(
        'name'          => __( 'Sidebar', 'sophie' ),
        'id'            => 'sidebar-1',
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget'  => '</aside>',
        'before_title'  => '<h1 class="widget-title">',
        'after_title'   => '</h1>',
    ) );
}
add_action( 'widgets_init', 'sophie_widgets_init' );

/**
 * Enqueue scripts and styles.
 */
function sophie_scripts() {
    wp_enqueue_style( 'sophie-style', get_stylesheet_uri() );

    wp_enqueue_script( 'sophie-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '20120206', true );

    wp_enqueue_script( 'sophie-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20130115', true );

    if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
        wp_enqueue_script( 'comment-reply' );
    }
}
add_action( 'wp_enqueue_scripts', 'sophie_scripts' );

/**
 * Implement the Custom Header feature.
 */
//require get_template_directory() . '/inc/custom-header.php';

/**
 * Custom template tags for this theme.
 */
require get_template_directory() . '/inc/template-tags.php';

/**
 * Custom functions that act independently of the theme templates.
 */
require get_template_directory() . '/inc/extras.php';

/**
 * Customizer additions.
 */
require get_template_directory() . '/inc/customizer.php';

/**
 * Load Jetpack compatibility file.
 */
require get_template_directory() . '/inc/jetpack.php';

然后我在 content-page.php 中添加了一行,变成了这个;

  <?php
/**
 * The template used for displaying page content in page.php
 *
 * @package Sophie
 */
?>

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <header class="entry-header">
        <h1 class="entry-title"><?php the_title(); ?></h1>
    </header><!-- .entry-header -->

<?php the_post_thumbnail(); ?>

    <div class="entry-content">
        <?php the_content(); ?>
        <?php
            wp_link_pages( array(
                'before' => '<div class="page-links">' . __( 'Pages:', 'sophie' ),
                'after'  => '</div>',
            ) );
        ?>
    </div><!-- .entry-content -->
    <?php edit_post_link( __( 'Edit', 'sophie' ), '<footer class="entry-meta"><span class="edit-link">', '</span></footer>' ); ?>
</article><!-- #post-## -->

现在我掌握了一些 wordpress 知识,这在过去一直对我有用。为什么现在不显示了?当然,在帖子页面上传了一张特色图片,当我使用另一个已经支持它们的主题时,这个特色图片就会显示出来。

是不是我忘记了一个步骤?

这是在我的page.php中;

 get_header(); ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

            <?php while ( have_posts() ) : the_post(); ?>

                <?php get_template_part( 'content', 'page' ); ?>

                <?php
                    // If comments are open or we have at least one comment, load up the comment template
                    if ( comments_open() || '0' != get_comments_number() ) :
                        comments_template();
                    endif;
                ?>

            <?php endwhile; // end of the loop. ?>

        </main><!-- #main -->
    </div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

【问题讨论】:

  • 您是否知道您的functions.php 末尾缺少` } endif;`?
  • 我没有包含整个 functions.php 文件,只是其中的一部分。如果有帮助,我会添加所有内容。
  • 我的赌注;我现在看到您的 functions.php 包含的内容比我之前注意到的要多,因此不需要 } endif;

标签: php wordpress


【解决方案1】:

在 the_post_thumbnail() 的 function reference page 上,我发现以下内容:

此标签必须在 The Loop 中使用。使用 get_the_post_thumbnail($id, $size, $attr ) 来获取任何帖子的特色图片。

由于您的 content-page.php 中没有循环,您将不得不使用建议的替代方案 get_the_post_thumbnail()

这个函数的所有参数都是可选的,所以我猜它会开箱即用,但如果不是你可以试试

get_the_post_thumbnail(get_queried_object_id());

请参阅this stack-exchange 答案以供参考。

编辑:

如果您想将 content-page.php 放在循环中,请在第一个文章标签之前使用此代码:

<?php get_header(); ?>

    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">

            <?php /* The loop */ ?>
            <?php while ( have_posts() ) : the_post(); ?>

而这段代码就在文章closign标签之后:

                    <?php comments_template(); ?>
            <?php endwhile; ?>

        </div><!-- #content -->
    </div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

这摘自第 13 页的 .php。

另一件事: 您确定您的文件必须命名为 content-page.php 而不仅仅是 page.php?

【讨论】:

  • 我尝试了您建议的两种方法,但遗憾的是它没有奏效。我添加了 然后尝试用 但两者都不起作用。如果这应该在循环中工作,是否可以将循环添加到 content-page.php?
  • @Kelly 由于代码块,我修改了答案。
  • 嗯,这是在我的 page.php 添加到第一篇文章,我认为这意味着我必须在 content-page.php 中查找内容
【解决方案2】:

添加

<?php the_post_thumbnail(); ?>

在循环中。

像这样:

        <?php /* Start the Loop */ ?>
        <?php while ( have_posts() ) : the_post(); ?>
        <?php the_post_thumbnail(); ?>
            <?php



                /*
                 * Include the Post-Format-specific template for the content.
                 * If you want to override this in a child theme, then include a file
                 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
                 */
                get_template_part( 'template-parts/content', get_post_format() );

            ?>


        <?php endwhile; ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 2012-10-22
    • 2019-05-11
    相关资源
    最近更新 更多