Funzione per recuperare categoria primaria di YOAST

Avete la necessità di recuperare la categoria primaria di yoast? Ecco come fare!

Ecco la funzione pronta all’uso spero possa essere utile, potete usarla sia all’interno del function, che dentro pagine, loop etc.

Codice step-by-step

Per prima cosa recuperiamo la categoria all’interno del loop in cui ci troviamo:

$category = get_the_category();

Per interrogare Yoast usiamo la classe WPSEO_Primary_Term (se esiste), altrimenti recuperiamo la prima categoria settata.

                 if ( class_exists('WPSEO_Primary_Term') )
					{
						$wpseo_primary_term = new WPSEO_Primary_Term( 'category', get_the_id() );
						$wpseo_primary_term = $wpseo_primary_term->get_primary_term();
						$term = get_term( $wpseo_primary_term );
						if (is_wp_error($term)) {
							$category_display = $category[0]->name;
							$category_link = get_category_link( $category[0]->term_id );
						} else {
							$category_display = $term->name;
							$category_link = get_category_link( $term->term_id );
						}
					}
					else {
						$category_display = $category[0]->name;
						$category_link = get_category_link( $category[0]->term_id );
					}

Infine ora che abbiamo sia il nome (category_display), sia il link(category_link) stampiamo l’html se è presente la categoria. 

                 // Display category
					if ( !empty($category_display) ){
					    if ( $useCatLink == true && !empty($category_link) ){
						$html_category = '<a href="'.$category_link.'">'.htmlspecialchars($category_display).'</a>';
					    } else {
						$html_category = htmlspecialchars($category_display);
					    }
					}

Codice completo

         // Funzione per recuperare categoria primaria di Yoast
				$category = get_the_category();
				$useCatLink = true;
				if ($category){
					$category_display = '';
					$category_link = '';
					if ( class_exists('WPSEO_Primary_Term') )
					{
						$wpseo_primary_term = new WPSEO_Primary_Term( 'category', get_the_id() );
						$wpseo_primary_term = $wpseo_primary_term->get_primary_term();
						$term = get_term( $wpseo_primary_term );
						if (is_wp_error($term)) {
							$category_display = $category[0]->name;
							$category_link = get_category_link( $category[0]->term_id );
						} else {
							$category_display = $term->name;
							$category_link = get_category_link( $term->term_id );
						}
					}
					else {
						$category_display = $category[0]->name;
						$category_link = get_category_link( $category[0]->term_id );
					}
					// Display category
					if ( !empty($category_display) ){
					    if ( $useCatLink == true && !empty($category_link) ){
						$html_category = '<a href="'.$category_link.'">'.htmlspecialchars($category_display).'</a>';
					    } else {
						$html_category = htmlspecialchars($category_display);
					    }
					}
				}//if category

Potete poi facilmente richiamarla dove desiderate all’interno del vostro template in questo modo:

<?php echo $html_category; ?>

Questo articolo ti è stato utile? Condividilo o fammi sapere cosa ne pensi nei commenti ! 🙂

Lascia la tua opinione

×