1
resposta

Criando diversos custom post type

Olá, eu queria saber sobre a forma de escrever função no Wordpress, tem vários exemplos de um único post type, mas não encontro como fazer vários custom post type dentro de uma única função, também não sei se é certo fazer isso, exemplo:

function custom_post_type() {
        $labels = array(
            'name' => _x('Notícias', 'post type general name'),
            'singular_name' => _x(Notícia', 'post type singular name')
        );

        $args = array(
            'labels' => $labels,
            'public' => true,            
            'register_meta_box_cb' => 'noticias_meta_box',
            'supports' => array('title','editor','thumbnail','comments', 'excerpt', 'custom-fields', 'revisions', 'trackbacks')
          );

    register_post_type( 'noticias' , $args );

        $labels = array(
            'name' => _x('Notícias', 'post type general name'),
            'singular_name' => _x(Notícia', 'post type singular name')
        );

        $args = array(
            'labels' => $labels,
            'public' => true,            
            'register_meta_box_cb' => 'noticias_meta_box',
            'supports' => array('title','editor','thumbnail','comments', 'excerpt', 'custom-fields', 'revisions', 'trackbacks')
          );

    register_post_type( 'noticias' , $args );
}

Para cada um, eu preciso mudar o nome das variáveis $args e $labels? Como isso é interpretado. Faz um tempo que eu não estudo PHP e tenho estudo JS e não poderia ter o mesmo nome, porque sobrescreveria os valores das variáveis.

1 resposta

Olá, Gisele! Tudo bem com você?

Peço desculpas pela demora no retorno a sua mensagem.

Para criar vários custom post types numa única função no Wordpress, você pode simplesmente alterar os nomes das variáveis $args e $labels para cada custom post type que você deseja criar. Dessa forma, você evita a sobrescrita dos valores das variáveis.

Por exemplo, se você quiser criar um custom post type chamado "Notícias" e outro chamado "Eventos", você pode fazer da seguinte maneira:

function custom_post_type() {
    $labels_noticias = array(
        'name' => _x('Notícias', 'post type general name'),
        'singular_name' => _x('Notícia', 'post type singular name')
    );

    $args_noticias = array(
        'labels' => $labels_noticias,
        'public' => true,            
        'register_meta_box_cb' => 'noticias_meta_box',
        'supports' => array('title','editor','thumbnail','comments', 'excerpt', 'custom-fields', 'revisions', 'trackbacks')
    );

    register_post_type('noticias', $args_noticias);

    $labels_eventos = array(
        'name' => _x('Eventos', 'post type general name'),
        'singular_name' => _x('Evento', 'post type singular name')
    );

    $args_eventos = array(
        'labels' => $labels_eventos,
        'public' => true,            
        'register_meta_box_cb' => 'eventos_meta_box',
        'supports' => array('title','editor','thumbnail','comments', 'excerpt', 'custom-fields', 'revisions', 'trackbacks')
    );

    register_post_type('eventos', $args_eventos);
}

Dessa forma, você pode criar quantos custom post types desejar, basta alterar os nomes das variáveis $args e $labels para cada um deles.

Todavia, vale ressaltar que como você postou sua pergunta há algum tempo é possível que a constante evolução da tecnologia impacte na resolução da sua dúvida.

Sendo assim, caso queira se aprofundar neste tema e com conteúdos atualizados, recomendo a formação abaixo, para realizar uma revisão completa em PHP:

Espero ter ajudado e bons estudos!