我有自定义帖子类型。每个帖子都有一个特色图片。在我的index.php中,我希望以其特色图片显示每个帖子的标题。以下代码显示标题,但不显示图像。
<?php $query = new WP_Query(
array(
'post_type' => 'platform',
'status' => 'publish'
) );
if ( $query->have_posts() ) {
while ($query->have_posts()) {
$query->the_post(); ?>
<p><?php the_title(); ?></p>
<p><? if( has_post_thumbnail() ) {
the_post_thumbnail();
} ?></p>
<?php }
}
wp_reset_postdata();
在wp_postmeta
表格中,_thumbnail_id
与每个post id
相关联。在管理员中,图像也会显示。
我做错了什么?
CPT注册码:
add_action('init', 'yrc_register_cpt_emfluence_platform_list', 0);
/**
* Create and register new Custom Post Type: Emfluence Platform List
* Fields: Name, Email, Platform List ID, Featured Image
*/
function yrc_register_cpt_emfluence_platform_list() {
$labels = array(
'name' => __('Platforms', 'yrc_csrvtool'),
'singular_name' => __('Platform', 'yrc_csrvtool'),
'menu_name' => __('Platforms', 'yrc_csrvtool'),
'all_items' => __('All Platforms', 'yrc_csrvtool'),
'view_item' => __('View Platform', 'yrc_csrvtool'),
'ad_new_item' => __('Add New', 'yrc_csrvtool'),
'add_new' => __('Add New', 'yrc_csrvtool'),
'edit_item' => __('Edit Platform', 'yrc_csrvtool'),
'update_item' => __('Update Platform', 'yrc_csrvtool'),
'search_items' => __('Search Platforms', 'yrc_csrvtool'),
'not_found' => __('Not found', 'yrc_csrvtool'),
'not_found_in_trash' => __('Not found in trash', 'yrc_csrvtool'),
);
$args = array(
'labels' => $labels,
'description' => __(' Platform List', 'yrc_csrvtool'),
'supports' => array('title', 'thumbnail' ),
'hierarchical' => false,
'public' => true,
'show_in_menu' => true,
'menu_icon' => 'dashicons-email',
'show_in_nav_menus' => true,
'menu_position' => 5,
'exclude_from_search' => true,
'publicly_queryable' => false,
'capability_type' => 'post',
);
register_post_type('platform', $args);
}
在主题中我也有缩略图的theme_support:
add_theme_support('post-thumbnails');
图像在管理员中非常明显,但在我使用the_post_thumbnail()
内部循环时却不可见。
答案 0 :(得分:2)
我已经看到了,你在这个波纹管代码之前以错误的方式启动了php
if( has_post_thumbnail() ) {
只有<?
,但它应该是<?php
请检查您的第一个代码。
感谢
答案 1 :(得分:1)
问题在于你的php语法; <? if( has_post_thumbnail() ) {
&gt;&gt;这里你在<?
之后缺少php。因此在php的这段代码中没有任何内容被解释。所以正确的语法是....
<?php $query = new WP_Query(
array(
'post_type' => 'platform',
'status' => 'publish'
) );
if ( $query->have_posts() ) {
while ($query->have_posts()) {
$query->the_post(); ?>
<p><?php the_title(); ?></p>
<p><?php if( has_post_thumbnail() ) { //missing php after <? here
the_post_thumbnail();
} ?></p>
<?php }
}
wp_reset_postdata();