获取特色图片的附件页面中的永久链接

时间:2018-03-12 19:51:49

标签: php wordpress wordpress-theming

我希望301将Wordpress中的附件页面重定向到父帖子或主页,顺序如下:

  1. 检查附件是否包含父级并重定向到该帖子网址
  2. 检查图像是否用作精选图片并重定向到帖子网址
  3. 将附件页面重定向到网站主页
  4. 第1点和第3点不是问题,但我发现难以解决第2点。

    这应该是相当简单的,就像这段代码的其余部分一样,但似乎如果一个图像被用作页面中的特色图像,那么就没有后期父集(如果我错了就纠正我)。

    到目前为止我的代码(如果是image.php,则在顶部):

    if (!empty($post->post_parent)) { // checks the parent is set and not 0
    
        $url = get_permalink($post->post_parent);
    
    } else if ( 'some code here' ) { // Check if the image is a featured image
    
        $url = get_permalink($some_variable_that_gets_the_url_of_the_page);
    
    } else {
    
        $url = home_url();
    
    }
    
    wp_redirect($url, 301 );
    exit();
    

    注意:Yoast不再这样做,我不想使用插件。无论如何,我还没有看到插件执行第2点中描述的内容。

1 个答案:

答案 0 :(得分:3)

您可以创建一个接受媒体ID的功能,并检查数据库中是否有_thumbnail_id个媒体ID。

function is_featured_image ($id)
{
    global $wpdb;

    return $wpdb->get_var(
        $wpdb->prepare(
            "SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_key = '_thumbnail_id' AND meta_value = %s",
            $id
        )
    );
}

这将返回false或找到的帖子的ID。如果有很多,它将返回第一个帖子的ID。

然后使用id,您可以检索网址。

} else if (($id = is_featured_image($post->ID)) && $id !== false) {
    $url = get_permalink($id);
}