Doubt about Custom Post Type

Asked

Viewed 403 times

1

I made a custom post type for Wordpress, but when showing posts in the category does not work. If I enter the URL example.com/category/mensagem-02/, nothing appears.

Can anyone help me? The code I used.

// Register Custom Post Type
function custom_post_type_mensagem() {
$labels = array(
    'name'                => _x( 'Mensagens', 'Post Type General Name', 'text_domain' ),
    'singular_name'       => _x( 'Mensagem', 'Post Type Singular Name', 'text_domain' ),
    'menu_name'           => __( 'Mensagem', 'text_domain' ),
    'parent_item_colon'   => __( 'Parent Item:', 'text_domain' ),
    'all_items'           => __( 'Todos os Post', 'text_domain' ),
    'view_item'           => __( 'View Item', 'text_domain' ),
    'add_new_item'        => __( 'Adicionar Novo Item', 'text_domain' ),
    'add_new'             => __( 'Adicionar Novo', 'text_domain' ),
    'edit_item'           => __( 'Edit Item', 'text_domain' ),
    'update_item'         => __( 'Update Item', 'text_domain' ),
    'search_items'        => __( 'Search Item', 'text_domain' ),
    'not_found'           => __( 'Not found', 'text_domain' ),
    'not_found_in_trash'  => __( 'Not found in Trash', 'text_domain' ),
);
$rewrite = array(
    'slug'                => 'mensagem',
    'with_front'          => false,
    'pages'               => true,
    'feeds'               => true,
);
$args = array(
    'label'               => __( 'mensagem', 'text_domain' ),
    'description'         => __( 'Blog de mensagens', 'text_domain' ),
    'labels'              => $labels,
    'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'trackbacks', 'revisions', 'custom-fields', 'page-attributes', 'post-formats' ),
    'taxonomies'          => array(  'category', 'post_tag','link_category' ),
    'hierarchical'        => false,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 5,
    'can_export'          => true,
    'has_archive'         => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'rewrite'             => $rewrite,
    'capability_type'     => 'page',
);
register_post_type( 'mensagem', $args );

}

// Hook into the 'init' action
add_action( 'init', 'custom_post_type_mensagem', 0 );
  • I don’t understand... you have a category called mensagem-02?

  • Yes, I did it as a test. But any category I create for custom post type does not appear anything.

2 answers

2

I think you misunderstood the concept of Custom Post Type - CPT. A CPT is a custom type of post and although it can have its own categories¹ a CPT is not a category and in its default form you will not have access through the mentioned URL.

To display the posts of this CPT you created the URL would be www.seusite.com/mensagem and the largest file hierarchy is Archive-message.php. Create this file, access the menu Configurações > Links permanentes and click save, then go to the URL as I said above and, if your file archive-mensagem.php is correct, the posts of the CPT message will appear.


1 -In fact they are called taxonomy, but I kept category to facilitate understanding

1

Be able to do what you wanted by adding this code:

function namespace_add_custom_types( $query ) {
  if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
    $query->set( 'post_type', array(
     'post', 'your-custom-post-type-here'
        ));
      return $query;
    }
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
  • How did this code solve the problem? Could you explain where you put it, and for what purpose? So more people can learn how you solved it.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.