我希望301将Wordpress中的附件页面重定向到父帖子或主页,顺序如下:
第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点中描述的内容。
答案 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);
}