WordPress自定义帖子类型不显示

时间:2018-11-27 12:58:24

标签: wordpress custom-post-type

我正在尝试在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');

我进入了“设置/永久链接”以保存本教程建议的更改,但仍然没有乐趣。

重申一下,以同样的方式添加普通帖子后,它会自动显示在主页上。添加自定义帖子时,我希望同样的事情发生。

1 个答案:

答案 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');

希望这会有所帮助。