使用 the_post_thumbnail() 正确显示缩略图

Properly displaying thumbnails with the_post_thumbnail()

我在 functions.php 中创建了一个名为 bateau 的自定义 post 类型。我还创建了一个页面,其中显示了属于 bateau 自定义 post 类型的所有 post,显示了一些最重要的字段。最后,当我单击其中一个 post 时,link 会将我转到相关的自定义 post 页面,即特定类型的船。

自定义 post bateau 有自己的自定义字段、缩略图和自定义分类法。

当我在特定船只的页面上时,我不仅要检索和显示最重要的内容,还要检索和显示其所有自定义字段、缩略图和分类法。

所以,在functions.php中,我写了这个过滤器:

add_filter('the_content','add_text');

    function add_text($text) {

        global $post;
        $text = "";

        if($post->post_type == 'bateau') { 

        $text.= "<h1 class=\"bateau-entry-title\">".get_post_meta( $post->ID, 'bateau_nom', true )."</h1>";
        return $text;
        }
    }   

它工作正常,前提是我不在关闭和打开 PHP 标签内写纯 HTML 文本,也就是说,只有当我将所有 HTML 包装在一个PHP 文本变量。如果我不这样做,内容也会显示在 header 的开头,不是一次,而是两次。很奇怪,不是吗?

如果我添加这一行:

$text.= "<img class=\"thumb\" src=\"the_post_thumbnail();

缩略图在 "article" 中正确显示...但是,你猜怎么着,也在 header 的开头,不是一次,而是两次!!!我就是找不到为什么缩略图会这样。有人可以帮忙吗?

如果您使用 the_post_thumbnail(),我认为您不需要 img 标签。

尝试做类似的事情:

if ( has_post_thumbnail() ) 
    the_post_thumbnail();

在 Wordpress 中,您调用的页面:

when I'm on the page of a particular boat

被称为single。而不是使用

the_content 上放置过滤器
add_filter('the_content','add_text');

你最好在循环中添加你想要的任何内容。为此,您可以在当前主题的根目录中创建一个名为 single-bateau.php 的文件(这是一个协议,因此您需要将其命名为完全相同),您可能会在其中循环:

if(have_posts()){
    while(have_posts()){
        the_post();
        the_title();
        if( has_post_thumbnail() ){
            the_post_thumbnail( $thumb_size );
        }
        the_taxonomies();
        the_category();
        the_tags();
    }
}