基于相关帖子设置特色图片

时间:2015-01-09 作者:Marc van Bree

我正在使用一个名为事件日历的插件。我并不总是为每个单独的活动设置特色图像。每个事件都有一个组织者ID(tribe\\u get\\u organizer\\u ID)。

我想添加一个过滤器,用于查看自定义帖子类型(tribe\\u events)中的事件是否附加了特征图像。如果没有,则筛选器应调用组织者并将组织者的特色图像指定为活动的特色图像。

我甚至不知道该从什么开始。像这样的?

    function set_featured_event_image () {
    if ( get_post_type() == \'tribe_events\') {
    if ( has_post_thumbnail() ) {
        the_post_thumbnail();
        }
        else {
GRAB THE IMAGE FROM THE RELATED ORGANIZER
        }
    }
}

    add_filter( \'**WHAT HOOK?**\', \'set_featured_event_image\');
我可能对这些都很反感。我们非常感谢在正确方向上的任何帮助。

2 个回复
SO网友:karpstrucking

我快速浏览了一下现代部落的source code, 尤其是single-event.php 查看模板。MT使用内部功能,tribe_event_featured_image(), 其中包括一个过滤器:tribe_event_featured_image.

您可以使用此过滤器查看MT是否已找到图像,如果未找到,请查找自己的图像并返回其值。

add_filter( \'tribe_event_featured_image\', \'wpse174412\', 10, 4 );
function wpse174412( $featured_image, $post_id, $size, $image_src ) {
  if ( ! $featured_image ) {
    // get image from related organizer
  }
  return $featured_image;
}

SO网友:Marc van Bree

我找到了一个解决方案,但似乎相当麻烦。我认为使用WP的原生缩略图功能可以得到更干净的解决方案,但我想不出来。

当我使用“tribe\\u event\\u featured\\u image”功能时,无论模板中加载了哪个功能,它都会很好地替换图像。然而,我也使用了Genesis框架及其响应滑块插件。使用tribe函数的解决方案没有使用特征图像填充滑块,因为“genesis\\u image”函数(使用并过滤WP的缩略图函数)调用了特征图像。

这就是为什么我认为处理本机功能的函数也会更好。但以下代码使我能够在没有设置特色图像的情况下,将组织者的特色图像显示为活动的特色图像。

    /** Define a default post thumbnail Genesis */
function default_event_image_fallback($output, $args) {
    global $post;
    if( $output || $args[\'size\'] == \'full\' && get_post_type() == \'tribe-events\' )
        return $output;

    $post_id = tribe_get_organizer_id();
    $image_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), $size );
    $thumbnail = $image_src[0];

    switch($args[\'format\']) {

        case \'html\' :
            return \'<img src="\'.$thumbnail.\'" class="attachment-\'. $args[\'size\'] .\'" alt="\'. get_the_title($post_id) .\'" />\';
            break;
        case \'url\' :
            return $thumbnail;
            break;
       default :
           return $output;
            break;
    }
}
add_filter(\'genesis_get_image\', \'default_event_image_fallback\', 10, 2);

/** Define a default post thumbnail Events Calendar */
function set_default_event_featured_img( $featured_image, $post_id, $size, $image_src ) {
    if ( ! $featured_image ) {
        $post_id = tribe_get_organizer_id();
        $image_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), $size );
        $featured_image = \'\';

        //if link is not specifically excluded, then include <a>
        if ( ! empty( $image_src ) && $link ) {
            $featured_image .= \'<div class="tribe-events-event-image"><a href="\' . tribe_get_event_link() . \'" title="\' . get_the_title( $post_id ) . \'"><img src="\' . $image_src[0] . \'" title="\' . get_the_title( $post_id ) . \'" /></a></div>\';
        } elseif ( ! empty( $image_src ) ) {
            $featured_image .= \'<div class="tribe-events-event-image"><img src="\' . $image_src[0] . \'" title="\' . get_the_title( $post_id ) . \'" /></div>\';
        }

        return apply_filters( \'tribe_event_featured_image\', $featured_image, $post_id, $size, $image_src );
    } 
    else {
        return $featured_image;
    }
}
add_filter( \'tribe_event_featured_image\', \'set_default_event_featured_img\', 10, 4 );

结束

相关推荐

Images not rendering

我有一个烘焙博客,最近我更改了url。我现在的问题是,当我将图像添加到帖子或图书馆时,它们不会显示/呈现。上载步骤通过OK,但图像不会渲染。你能帮忙吗,我只是不知道我哪里做错了。