Skip to content

Instantly share code, notes, and snippets.

@jonathan-dejong
Last active May 9, 2019 07:39
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonathan-dejong/05d2118a84fc7bc2f684 to your computer and use it in GitHub Desktop.
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
<?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;
}
?>
@jemoreto
Copy link

Thanks for this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment