Adicionar automaticamente uma categoria a um tipo de postagem personalizado

Eu vou configurar um tipo de postagem personalizado em um site (para vagas de emprego) e vou criar um item de menu separado no navegador principal do site usando categorias e eu usarei uma categoria de “trabalhos” para efetivamente tem o item de menu de trabalhos em execução como um segundo blog.

O que eu gostaria de ter é assim quando o cliente adiciona um trabalho na parte de trás, a postagem criada sob este tipo de postagem personalizado automaticamente tem a categoria de “trabalhos” aplicados, independentemente de qualquer categoria adicional que eles usam, então os trabalhos postados são adicionados automaticamente a este item de menu na frente.

Existe uma maneira de adicionar automaticamente uma categoria a um tipo de post-custom? E também tê-lo para que qualquer postagem com a categoria “trabalhos” não seja exibida na página principal do blog (que será uma página de notícias e informações de mercado).

Qualquer ajuda seria incrível.

Emily

Solutions Collecting From Web of "Adicionar automaticamente uma categoria a um tipo de postagem personalizado"

Para responder a primeira pergunta (pré-preencher um CPT com um gato), você pode adicionar a seguinte function às functions.php. (faça o primeiro svp do backup)

No código abaixo, os filmes são o tipo de postagem personalizada e o horror é a categoria.
Por favor, mude para preferências próprias.

 /** * Set a Category on Custom Post Type * * Read more: {@link https://developer.wordpress.org/reference/functions/get_post_type/} * {@link https://codex.wordpress.org/Function_Reference/get_category_by_slug} * {@link https://codex.wordpress.org/Function_Reference/wp_set_object_terms} * */ add_action( 'save_post', 'wpse261307_set_cat_on_cpt' ); function wpse261307_set_cat_on_cpt( $post_id ) { global $wpdb; // Check for correct post type if ( get_post_type() == 'movies' ) // Set post or custom-post type name here { // Find the Category by slug $idObj = get_category_by_slug( 'horror' ); // Set your Category here // Get the Category ID $id = $idObj->term_id; // Set now the Category for this CPT wp_set_object_terms( $post_id, $id, 'category', true ); } }// end function 

Eu então faria uma function que esconde a meta-checkbox no back-end para este CPT específico. (então ninguém pode adicionar / alterar a categoria, mas isso só é útil quando você usa apenas uma publicação de categoria de categoria)

Então você precisará fazer uma function que esconda este CPT específico para ser mostrado na página principal do blog. (usando uma consulta para excluir a categoria ‘jobs’ na página principal do blog) .

 /** * Exclude CPT with Cat jobs on Landing page * * Read more: {@link https://codex.wordpress.org/Function_Reference/get_category_by_slug} * {@link https://codex.wordpress.org/Function_Reference/wp_set_object_terms} * {@link https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts#Exclude_categories_on_your_main_page} * {@link https://codex.wordpress.org/Function_Reference/is_main_query#Examples} */ add_action( 'pre_get_posts', 'wpse261307_exclude_cat_main_blog' ); function wpse261307_exclude_cat_main_blog( $query ) { global $wpdb; // Find the Category by slug $idObj = get_category_by_slug( 'horror' ); // Get the Category ID $id = $idObj->term_id; if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'cat', -$id ); } } // end function 

Espero que isso ajude você no seu caminho.

Nota:
• Adicione isso a um plugin de brew caseiro ou em myfunctions.php na pasta wp-content / mu-plugins (que você precisa criar você mesmo)
• Imho a solução mais sólida para ter certeza de que nada se perca (o que significa fora da vista porque ainda está em seu database) ao mudar para outro tema. (as alterações feitas diretamente em um arquivo de template não são mais visíveis quando você muda para outro tema)
• Btw, o mesmo (adicionando-os em um arquivo myfunctions.php na pasta wp-content/mu-plugins ) faria para criar tipos de postagem personalizados.

Ps, para esclarecer por que não sou fã de usar números de id diretamente:

  • Acontece que uma categoria é excluída por qualquer motivo e depois parece um erro e a mesma categoria precisa ser criada novamente.
  • Quando uma nova categoria é criada (mesmo com o mesmo nome) , obterá outro número de id e, em seguida, (quando você usa o próprio número diretamente em qualquer código), suas funções não funcionam mais por causa do número de id errado.

A adição automática de uma categoria a um tipo de postagem personalizado já foi feita e respondida aqui .

Quanto à exclusão, então você precisa escrever um WP_Query personalizado:

 $args = array( 'post_type' => 'post', 'cat' => -1, ); $fp_query = new WP_Query( $args ) // The Loop if ( $fp_query->have_posts() ) { // Loop Code for Posts wp_reset_postdata(); } else { // No Posts Found Code } 

Você alteraria o número 1 para o número da Categoria ID para jobs mas mantê-lo negativo, pois isso desencadeia uma exclusão.