This article 是我获取初始代码的地方,但我想针对所有具有video post\\u格式的帖子。我可以将$post\\u链接更改为我想要的内容,但当我将代码更改为仅针对视频post\\u格式时,它会中断。
有没有人能简单地解决这个问题?
function add_rewrite_rules( $wp_rewrite ) {
$new_rules = array(
\'videos/(.+?)/?$\' => \'index.php?post_type=post&post_format=video&name=\'. $wp_rewrite->preg_index(1),
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action(\'generate_rewrite_rules\', \'add_rewrite_rules\');
function change_blog_links($post_link, $id=0){
global $post;
$post = get_post($id);
$postformat = get_post_format( $post_id );
if ( is_object($post) && $post->post_type == \'post\' && $post->post_format == \'video\') {
return $post_link = home_url(\'/videos/\'. $post->post_name.\'/\');
}
return $post_link;
}
add_filter(\'post_link\', \'change_blog_links\', 1, 3);
我尝试的另一种方法是将上面的if语句更改为:
if ( has_post_format( \'video\' )) {
return $post_link = home_url(\'/videos/\'. $post->post_name.\'/\');
}
但这也行不通。我也不知道如何设置我的重写规则,这样我就不会有重复的内容,它现在的编写方式并不能修复它。
如果有什么不同的话,我会使用DIVI-Extra主题。
SO网友:Tasa
我发现上面的问题与Divi&;有关;正在使用的额外主题。该主题有自己的功能,并以自己的方式注册帖子格式,在帖子格式前添加“et”。如下图所示,解决了上述具体问题:
if ( is_object($post) && $post->post_type == \'post\' && \'video\' == et_get_post_format( $post->ID )) {
return $post_link = home_url(\'/videosnew/\'. $post->post_name.\'/\');
}
这正是在使用Divi主题时,post format功能发挥作用的关键所在:
et_get_post_format( $post->ID )
代替标准的WordPress post format功能:
get_post_format( $post->ID )