Adicione custom post types ao feed e ao loop do WordPress

Os custom post types – tipos de post personalizados – disponíveis no wordpress podem ser uma mão na roda mas também uma dor de cabeça se você quiser integrá-los junto com os posts e páginas já existentes no seu blog. Se você quiser um meio rápido e fácil de criar posts personalizados, recomendo o uso do plugin  Custom post type UI.

Aí vão algumas dicas:

Adicionando os custom post types ao feed

Se você usa os tipos de post personalizados do WordPress, deve ter percebido que eles não entram no feed padrão do seu blog. Para fazer isso é preciso dizer ao WordPress quais tipos adicionar ao feed.

Para fazer isso, cole no seu functions.php:

function add_cpt_to_feed( $qv ) {
  if ( isset($qv['feed']) && !isset($qv['post_type']) )
    $qv['post_type'] = array('post', '');
  return $qv;
}
add_filter( 'request', 'add_cpt_to_feed' );

Na linha $qv[‘post_type’] = array(‘post’, ‘ ‘); você vai adicionar os nomes dos tipos de post que você criou. Por exemplo, se criou um tipo chamado imagens, a linha vai ficar:

$qv[‘post_type’] = array(‘post’, ‘imagens‘);

Adicionando custom post types ao loop

Para adicionar automaticamente todos os tipos ao loop padrão do WP, acrescente este código ao functions.php:

if ( ! function_exists( 'ucc_add_cpts_to_pre_get_posts' ) ) {
function ucc_add_cpts_to_pre_get_posts( $query ) {
	if ( $query->is_main_query() && ! is_post_type_archive()  && ! is_singular() && ! is_404() ) {
		$my_post_type = get_query_var( 'post_type' );
		if ( empty( $my_post_type ) ) {
			$args = array(
				'exclude_from_search' => false,
				'public' => true,
				'_builtin' => false
			);
			$output = 'names';
			$operator = 'and';
			$post_types = get_post_types( $args, $output, $operator );

			$post_types = array_merge( $post_types, array( 'post' ) );
			$query->set( 'post_type', $post_types );
		}
	}
} }
add_action( 'pre_get_posts', 'ucc_add_cpts_to_pre_get_posts' );

As dicas vieram daqui e daqui.

Deixe um comentário