Last active
May 9, 2019 07:39
-
-
Save jonathan-dejong/05d2118a84fc7bc2f684 to your computer and use it in GitHub Desktop.
Example of using WordPress SEO By Yoast filters with Beautiful Taxonomy Filters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* This file is taken directly from a clients site so it contains strings and conditions not necessarily useful to anyone else. | |
However it does show how one can use these filters to modify the meta information for the different filtered results */ | |
/* CHANGE META DESCRIPTION ON KLINIK FILTER PAGES */ | |
add_filter('wpseo_metadesc', 'custom_metadesc', 10, 1); | |
function custom_metadesc($desc){ | |
if(is_tax(array('omrade', 'yrkeskategori', 'specialisering', 'betalningsmedel', 'forsakringsbolag'))){ | |
global $wp_query; | |
$termID = $wp_query->queried_object->term_id; | |
$term = get_term($termID, $wp_query->query_vars['taxonomy']); | |
if(is_tax('omrade')){ | |
if($term->parent > 0){ // has parent | |
$termparent = get_term($term->parent, $wp_query->query_vars['taxonomy']); | |
$desc = 'Söker du vårdgivare i ' . $term->name . ', ' . $termparent->name . '? På Skadekompassen.se finns ' . $wp_query->found_posts . ' mottagningar inom ' . $term->name . ' – läs om vårdgivarna och boka!'; | |
}else{ | |
$desc = 'Söker du vårdgivare i ' . $term->name . '? På Skadekompassen.se finns ' . $wp_query->found_posts . ' mottagningar inom ' . $term->name . ' – läs om vårdgivarna och boka!'; | |
} | |
}else if(is_tax('yrkeskategori') || is_tax('specialisering')){ | |
$desc = 'Söker du vårdgivare som arbetar med ' . $term->name . '? På Skadekompassen.se finns ' . $wp_query->found_posts . ' mottagningar inom ' . $term->name . ' – läs om vårdgivarna och boka!'; | |
}else if(is_tax('betalningsmedel')){ | |
$desc = 'Söker du vårdgivare där du kan betala med ' . $term->name . '? På Skadekompassen.se finns minst ' . $wp_query->found_posts . ' mottagningar som tar emot ' . $term->name . ' – läs om vårdgivarna och boka!'; | |
}else if(is_tax('forsakringsbolag')){ | |
$desc = 'Söker du vårdgivare för dig med försäkringsbolaget ' . $term->name . '? På Skadekompassen.se finns minst ' . $wp_query->found_posts . ' mottagningar som accepterar ' . $term->name . ' – läs om vårdgivarna och boka!'; | |
} | |
} | |
return $desc; | |
} | |
/* CHANGE TITLE ON KLINIK FILTER PAGES */ | |
add_filter('wpseo_title', 'custom_title', 10, 1); | |
function custom_title($title){ | |
global $wp_query; | |
if(count($wp_query->query) > 2){ //we've selected more than one filter | |
if(is_post_type_archive('vardgivare') || is_tax(array('omrade', 'yrkeskategori', 'specialisering', 'behandlingsmetod', 'undersokningsmetod', 'besvarsomrade', 'skada-sjukdomstillstand'))) | |
$title = setup_title(); | |
//$title .= ' – Skadekompassen'; | |
}else{ //only one filter OR on a tax-archive | |
if(is_tax(array('omrade', 'yrkeskategori', 'specialisering', 'betalningsmedel', 'forsakringsbolag'))){ | |
$termID = $wp_query->queried_object->term_id; | |
$term = get_term($termID, $wp_query->query_vars['taxonomy']); | |
if(is_tax('omrade')){ | |
if($term->parent > 0){ // has parent | |
$termparent = get_term($term->parent, $wp_query->query_vars['taxonomy']); | |
$title = 'Vårdgivare i ' . $term->name . ', ' . $termparent->name . ' – Skadekompassen'; | |
}else{ | |
$title = 'Vårdgivare i ' . $term->name . ' – Skadekompassen'; | |
} | |
}else if(is_tax('yrkeskategori') || is_tax('specialisering')){ | |
$title = 'Vårdgivare som arbetar med ' . $term->name . ' – Skadekompassen'; | |
}else if(is_tax('betalningsmedel')){ | |
$title = 'Vårdgivare där du kan betala med ' . $term->name . ' – Skadekompassen'; | |
}else if(is_tax('forsakringsbolag')){ | |
$title = 'Vårdgivare för dig med försäkringsbolaget ' . $term->name . ' – Skadekompassen'; | |
} | |
} | |
} | |
if(is_singular('vardgivare')){ | |
//if we're on a single vardgivare post | |
global $post; | |
$title = get_the_title($post->ID); | |
//get omrade terms and append | |
$orter = get_the_terms($post->ID, 'omrade'); | |
foreach ( $orter as $term ) { | |
unset( $orter[$term->parent] ); | |
} | |
$count = count($orter); | |
$i = 1; | |
foreach($orter as $term){ | |
$formatted_orter .= $term->name; | |
if($i < $count){ | |
$formatted_orter .= ', '; | |
} | |
$i++; | |
} | |
if($orter){ | |
$title .= ', ' . $formatted_orter; | |
} | |
//get yrkeskategori terms and append | |
$yrkeskategori = get_the_terms($post->ID, 'yrkeskategori'); | |
$count = count($yrkeskategori); | |
$i = 1; | |
foreach($yrkeskategori as $term){ | |
$formatted_yrkeskategori .= $term->name; | |
if($i < $count){ | |
$formatted_yrkeskategori .= ', '; | |
} | |
$i++; | |
} | |
if($yrkeskategori){ | |
$title .= ', ' . $formatted_yrkeskategori; | |
} | |
$title .= ' – ' . get_bloginfo('blogname'); | |
} | |
return $title; | |
} | |
/* CHANGE CANONICAL ON KLINIK FILTER PAGES */ | |
add_filter('wpseo_canonical', 'custom_canonical', 10, 1); | |
function custom_canonical($canonical){ | |
global $wp_query; | |
if(count($wp_query->query) > 2){ //we've selected more than one filter | |
if(is_post_type_archive({{the post type being used}}) || is_tax(array({{the taxonomies being used}}))) | |
$canonical = false; | |
}else{ //only one filter OR on a tax-archive | |
if(is_tax(array({{the taxonomies being used}}))){ | |
$canonical = false; | |
} | |
} | |
return $canonical; | |
} | |
function setup_title(){ | |
global $wp_query; | |
$terms = $wp_query->query; | |
$title = ''; | |
$altered = false; | |
if(array_key_exists('yrkeskategori', $terms)){ | |
$yrkeskategori = get_term_by('slug', $terms['yrkeskategori'], 'yrkeskategori'); | |
$title .= '' . $yrkeskategori->name; | |
$altered = true; | |
} | |
if(array_key_exists('behandlingsmetod', $terms) || array_key_exists('undersokningsmetod', $terms)|| array_key_exists('besvarsomrade', $terms) || array_key_exists('skada-sjukdomstillstand', $terms) || array_key_exists('specialisering', $terms)){ | |
$others = array(); | |
if($altered == true){ | |
$title .= ', '; | |
} | |
$title .= ''; | |
if(array_key_exists('behandlingsmetod', $terms)){ | |
$behandlingsmetod = get_term_by('slug', $terms['behandlingsmetod'], 'behandlingsmetod'); | |
$others[] = $behandlingsmetod->name; | |
} | |
if(array_key_exists('undersokningsmetod', $terms)){ | |
$undersokningsmetod = get_term_by('slug', $terms['undersokningsmetod'], 'undersokningsmetod'); | |
$others[] = $undersokningsmetod->name; | |
} | |
if(array_key_exists('besvarsomrade', $terms)){ | |
$besvarsomrade = get_term_by('slug', $terms['besvarsomrade'], 'besvarsomrade'); | |
$others[] = $besvarsomrade->name; | |
} | |
if(array_key_exists('skada-sjukdomstillstand', $terms)){ | |
$skada_sjukdomstillstand = get_term_by('slug', $terms['skada-sjukdomstillstand'], 'skada-sjukdomstillstand'); | |
$others[] = $skada_sjukdomstillstand->name; | |
} | |
if(array_key_exists('specialisering', $terms)){ | |
$specialisering = get_term_by('slug', $terms['specialisering'], 'specialisering'); | |
$others[] = $specialisering->name; | |
} | |
$pretitle .= join(", ", $others); | |
$title .= str_replace_last(', ', ' & ', $pretitle); | |
$altered = true; | |
} | |
if(array_key_exists('omrade', $terms)){ | |
$omrade = get_term_by('slug', $terms['omrade'], 'omrade'); | |
if($altered == true){ | |
$title .= ', ' . $omrade->name; | |
} else { | |
$title .= '' . $omrade->name; | |
} | |
$altered = true; | |
} | |
if($altered){ | |
$title .= ' – Skadekompassen'; | |
} | |
return $title; | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for this!