在主页上的帖子标题前添加类别图片

时间:2018-06-11 作者:wes

我正在建立一个足球新闻网站,在我的主页上有一个最新文章的列表。只有标题和日期,没有特色图片等。非常干净和简单。但我想添加一个它位于其前面的类别的图像。

例如,如果是英国足球比赛的新闻,标题前会有一面英国国旗。在我的WordPress文章中,它将发布在英语类别中。如果是荷兰比赛,将有荷兰国旗等。

我有一个用photoshop制作的例子。前5篇文章是我真正想要的,最后一篇是他们目前的状态。(这是演示文本,所以不要把重点放在文本上):

enter image description here

Class Block_28_View extends BlockViewAbstract
{
    public function set_content_setting_option()
    {
        $this->options[\'show_date\'] = \'\';
        $this->options[\'date_format\'] = \'default\';
        $this->options[\'date_format_custom\'] = \'Y/m/d\';
        $this->options[\'excerpt_length\'] = 20;
    }

    public function render_block($post, $attr)
    {
        $date = $attr[\'show_date\'] ? $this->post_meta_2($post)  : "";

        $output =
            "<article " . jnews_post_class("jeg_post jeg_pl_xs_4", $post->ID) . ">
                <div class=\\"jeg_postblock_content\\"><img src="\\
                    <h3 class=\\"jeg_post_title\\">
                        <a href=\\"" . get_the_permalink($post) . "\\">" . get_the_title($post) . "</a>
                    </h3>
                    " . $date . "
                </div>
            </article>";

        return $output;
    }

    public function build_column($results, $attr)
    {
        $first_block  = \'\';
        $ads_position = $this->random_ads_position(sizeof($results));

        for ( $i = 0; $i < sizeof($results); $i++ ) 
        {
            if ( $i == $ads_position ) 
            {
                $first_block .= $this->render_module_ads(\'jeg_ajax_loaded anim_\' . $i);
            }

            $first_block .= $this->render_block($results[$i], $attr);
        }

        $show_border = $attr[\'show_border\'] ? \'show_border\' : \'\';

        $output =
            "<div class=\\"jeg_posts {$show_border}\\">
                <div class=\\"jeg_postsmall jeg_load_more_flag\\">
                    {$first_block}
                </div>
            </div>";

        return $output;
    }

    public function build_column_alt($results, $attr)
    {
        $first_block  = \'\';
        $ads_position = $this->random_ads_position(sizeof($results));

        for ( $i = 0; $i < sizeof($results); $i++ ) 
        {
            if ( $i == $ads_position ) 
            {
                $first_block .= $this->render_module_ads(\'jeg_ajax_loaded anim_\' . $i);
            }

            $first_block .= $this->render_block($results[$i], $attr);
        }

        $output = $first_block;

        return $output;
    }


    public function render_output($attr, $column_class)
    {
        $results    = $this->build_query($attr);
        $navigation = $this->render_navigation($attr, $results[\'next\'], $results[\'prev\'], $results[\'total_page\']);

        if(!empty($results[\'result\'])) {
            $content = $this->render_column($results[\'result\'], $attr);
        } else {
            $content = $this->empty_content();
        }

        return
            "<div class=\\"jeg_block_container\\">
                {$this->get_content_before($attr)}
                {$content}
                {$this->get_content_after($attr)}
            </div>
            <div class=\\"jeg_block_navigation\\">
                {$this->get_navigation_before($attr)}
                {$navigation}
                {$this->get_navigation_after($attr)}
            </div>";
    }

    public function render_column($result, $attr)
    {
        $content = $this->build_column($result, $attr);

        return $content;
    }

    public function render_column_alt($result, $attr)
    {
        $content = $this->build_column_alt($result, $attr);

        return $content;
    }
}

2 个回复
SO网友:cjbj

使用filter on the title, 您可以将其添加到functions.php. 像这样:

add_filter (\'the_title\', \'wpse305812_add_flag\', 10, 2);
function wpse305812_add_flag ($title, $id) {
  if (in_category (\'england\', $id)) $flag = "http://www.example.com/.../england.jpg"
  elseif (in_category (\'brasil\', $id)) $flag = "http://www.example.com/.../brasil.jpg"
  ...;
  return \'<img src="\' . $flag . \'"> \' . $title;
  }
请注意,此(相当不合法)代码不会考虑将两个标志分配给一个标题的可能性。

SO网友:Akshat

您可以使用

global $post
$cat_id = get_the_category( $post->ID );
然后,您可以通过以下方式获取类别的缩略图url

$cat_thumb_url = get_the_post_thumbnail_url($cat_id);
现在,您可以使用此URL显示您的图像。此外,您还可以传递size参数以获取\\u post\\u thumbnail\\u url()。

结束

相关推荐

Adding Images into API

我正试图将特色图片添加到我的API中,但这是一种不同类型的帖子。http://example.com/wp-json/wp/v2/directory我一直在使用WP REST API控制器,但它没有显示图像选项。我也尝试使用“更好的RESTAPI特色图片”,但运气不好。这开始让我恼火了。