我正在尝试在Wordpress测试网站上创建自定义帖子类型,但似乎无法显示它们。我遵循了“ OReilly's-Wordpress缺少的手册”中的教程,该教程提供了放置在“ functions.php”文件中的示例代码,并且还建议使用插件“ Custom Post Type UI”。我尝试将两者结合使用,但没有成功。
查看我的测试站点here 据我对以下代码的理解,使用我的自定义帖子“ Web Services”创建的任何帖子(正确显示在wordpress admin左侧栏中)应显示在首页上。
我在'functions.php'文件中放置的代码如下:
function cptui_register_my_cpts() {
/**
* Post Type: Web Services.
*/
$labels = array(
"name" => __( "Web Services", "" ),
"singular_name" => __( "Web Services", "" ),
);
$args = array(
"label" => __( "Web Services", "" ),
"labels" => $labels,
"description" => "",
"public" => true,
"publicly_queryable" => true,
"show_ui" => true,
"delete_with_user" => false,
"show_in_rest" => true,
"rest_base" => "",
"rest_controller_class" => "WP_REST_Posts_Controller",
"has_archive" => false,
"show_in_menu" => true,
"show_in_nav_menus" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => array( "slug" => "web_services", "with_front" => true
),
"query_var" => true,
"supports" => array( "title", "editor", "thumbnail", "excerpt" ),
"taxonomies" => array( "category", "post_tag" ),
);
register_post_type( "web_services", $args );
}
add_action( 'init', 'cptui_register_my_cpts' );
function add_web_services_to_archives( $wp_query ) {
$types_array = array( 'post', 'web_services' );
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
set_query_var( 'post_type', $types_array );
}
}
add_action('pre_get_posts', 'add_web_services_to_archives');
我进入了“设置/永久链接”以保存本教程建议的更改,但仍然没有乐趣。
重申一下,以同样的方式添加普通帖子后,它会自动显示在主页上。添加自定义帖子时,我希望同样的事情发生。
答案 0 :(得分:0)
尝试在正在设置自定义查询变量的functions.php中更改功能。
function add_web_services_to_archives( $query ) {
$types_array = array( 'post', 'web_services' );
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set_query_var( 'post_type', $types_array );
}
}
add_action('pre_get_posts', 'add_web_services_to_archives');
希望这会有所帮助。