我希望按照以下顺序301将Wordpress中的附件页面重定向到父帖子或主页:
- 检查附件是否有父项并重定向到该帖子的URL
- 检查图片是否用作特色图片并重定向到帖子网址
- 将附件页面重定向到网站主页
第一点和第三点不是问题, 但是我发现很难解决第二点。
这应该是相当琐碎的, 就像该代码的其余部分一样, 但是, 如果将图像用作页面中的特色图像, 则似乎没有张贴父集(如果我错了, 请纠正我)。
到目前为止, 我的代码如下(如果使用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
你可以创建一个接受媒体ID的函数, 并检查数据库中是否有包含媒体ID的_thumbnail_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);
}
评论前必须登录!
注册