如果您运行的是WordPress 3.0.1或更高版本,我相信您的问题在于“post\\u type\\u link”过滤器声明和函数参数。
应用“post\\u type\\u link”筛选器时,它会传递以下4个参数:
apply_filters(\'post_type_link\', $post_link, $post, $leavename, $sample);
但您的函数接受$post\\u link和$id。
尝试以下调整:
function custom_post_link( $post_link, $post ) {
if ( $post->post_type != \'course-segment\')
return $post_link;
$course = \'course-segment\';
if( $terms = wp_get_object_terms( $post->ID, \'course\' ) )
$course = $terms[0]->slug;
return str_replace( \'%course%\', $course, $post_link );
}
add_filter( \'post_type_link\', \'custom_post_link\', 1, 2 );