Function Reference: geodir_add_meta_keywords
Summary
Adds meta keywords and description for SEO.
Global Values
- $wpdb
- (object) (required) WordPress Database object.
- Default: None
- $post
- (object) (required) The current post object.
- Default: None
- $wp_query
- (object) (required) WordPress Query object.
- Default: None
- $geodir_addon_list
- (array) (required) List of active GeoDirectory extensions.
- Default: None
Package
GeoDirectory
Change Log
Since: 1.0.0
1.5.4 Modified to replace %location% from meta when Yoast SEO plugin active.
1.6.18 Option added to disable overwrite by Yoast SEO titles & metas on GD pages.
Filters
‘geodir_seo_meta_location_description’ [Line: 1072]
‘geodir_location_description_everywhere_text’ [Line: 1131]
‘geodir_seo_meta_description_pre’ [Line: 1241]
‘geodir_seo_meta_description’ [Line: 1250]
‘geodir_seo_meta_keywords’ [Line: 1300]
Source File
geodir_add_meta_keywords() is located in geodirectory-functions/custom_functions.php [Line: 1037]
Source Code
function geodir_add_meta_keywords() { global $wp, $post, $wp_query, $wpdb, $geodir_addon_list; $is_geodir_page = geodir_is_geodir_page(); if ( ! $is_geodir_page ) { return; }// if non GD page, bail $use_gd_meta = true; if ( ( class_exists( 'WPSEO_Frontend' ) || class_exists( 'All_in_One_SEO_Pack' ) ) && !geodir_disable_yoast_seo_metas() ) { $use_gd_meta = false; if ( geodir_is_page( 'search' ) ) { $use_gd_meta = true; } } if ( ! $use_gd_meta ) { return; }// bail if Yoast WordPress SEO or All_in_One_SEO_Pack active. $current_term = $wp_query->get_queried_object(); $all_postypes = geodir_get_posttypes(); $geodir_taxonomies = geodir_get_taxonomies( '', true ); $meta_desc = ''; $meta_key = ''; if ( isset( $current_term->ID ) && $current_term->ID == geodir_location_page_id() ) { /** * Filter SEO meta location description. * * @since 1.0.0 */ $meta_desc = apply_filters( 'geodir_seo_meta_location_description', '' ); $meta_desc .= ''; } if ( have_posts() && is_single() OR is_page() ) { while ( have_posts() ) { the_post(); if ( has_excerpt() ) { $out_excerpt = strip_tags( strip_shortcodes( get_the_excerpt() ) ); if ( empty( $out_excerpt ) ) { $out_excerpt = strip_tags( do_shortcode( get_the_excerpt() ) ); } $out_excerpt = str_replace( array( "\r\n", "\r", "\n" ), "", $out_excerpt ); } else { $out_excerpt = str_replace( array( "\r\n", "\r", "\n" ), "", $post->post_content ); $out_excerpt = strip_tags( strip_shortcodes( $out_excerpt ) ); if ( empty( $out_excerpt ) ) { $out_excerpt = strip_tags( do_shortcode( $out_excerpt ) ); // parse short code from content } $out_excerpt = trim( wp_trim_words( $out_excerpt, 35, '' ), '.!?,;:-' ); } $meta_desc .= $out_excerpt; } } elseif ( ( is_category() || is_tag() ) && isset( $current_term->taxonomy ) && in_array( $current_term->taxonomy, $geodir_taxonomies ) ) { if ( is_category() ) { $meta_desc .= __( "Posts related to Category:", 'geodirectory' ) . " " . geodir_utf8_ucfirst( single_cat_title( "", false ) ); } elseif ( is_tag() ) { $meta_desc .= __( "Posts related to Tag:", 'geodirectory' ) . " " . geodir_utf8_ucfirst( single_tag_title( "", false ) ); } } elseif ( isset( $current_term->taxonomy ) && in_array( $current_term->taxonomy, $geodir_taxonomies ) ) { $meta_desc .= isset( $current_term->description ) ? $current_term->description : ''; } $geodir_post_type = geodir_get_current_posttype(); $geodir_post_type_info = get_post_type_object( $geodir_post_type ); $geodir_is_page_listing = geodir_is_page( 'listing' ) ? true : false; $category_taxonomy = geodir_get_taxonomies( $geodir_post_type ); $tag_taxonomy = geodir_get_taxonomies( $geodir_post_type, true ); $geodir_is_category = isset( $category_taxonomy[0] ) && get_query_var( $category_taxonomy[0] ) ? get_query_var( $category_taxonomy[0] ) : false; $geodir_is_tag = isset( $tag_taxonomy[0] ) && get_query_var( $tag_taxonomy[0] ) ? true : false; $geodir_is_search = geodir_is_page( 'search' ) ? true : false; $geodir_is_location = geodir_is_page( 'location' ) ? true : false; $geodir_location_manager = isset( $geodir_addon_list['geodir_location_manager'] ) && $geodir_addon_list['geodir_location_manager'] = 'yes' ? true : false; $godir_location_terms = geodir_get_current_location_terms( 'query_vars' ); $gd_city = $geodir_location_manager && isset( $godir_location_terms['gd_city'] ) ? $godir_location_terms['gd_city'] : null; $gd_region = $geodir_location_manager && isset( $godir_location_terms['gd_region'] ) ? $godir_location_terms['gd_region'] : null; $gd_country = $geodir_location_manager && isset( $godir_location_terms['gd_country'] ) ? $godir_location_terms['gd_country'] : null; /** * Filter the Everywhere text in location description. * * @since 1.6.22 * * @param string $replace_location Everywhere text. */ $replace_location = apply_filters( 'geodir_location_description_everywhere_text', __( 'Everywhere', 'geodirectory' ) ); $location_id = null; if ( $geodir_location_manager ) { $sql = $wpdb->prepare( "SELECT location_id FROM " . POST_LOCATION_TABLE . " WHERE city_slug=%s ORDER BY location_id ASC LIMIT 1", array( $gd_city ) ); $location_id = (int) $wpdb->get_var( $sql ); $location_type = geodir_what_is_current_location(); if ( $location_type == 'city' ) { $replace_location = geodir_get_current_location( array( 'what' => 'city', 'echo' => false ) ); } elseif ( $location_type == 'region' ) { $replace_location = geodir_get_current_location( array( 'what' => 'region', 'echo' => false ) ); } elseif ( $location_type == 'country' ) { $replace_location = geodir_get_current_location( array( 'what' => 'country', 'echo' => false ) ); $replace_location = __( $replace_location, 'geodirectory' ); } $country = get_query_var( 'gd_country' ); $region = get_query_var( 'gd_region' ); $city = get_query_var( 'gd_city' ); $current_location = ''; if ( $country != '' ) { $current_location = get_actual_location_name( 'country', $country, true ); } if ( $region != '' ) { $current_location = get_actual_location_name( 'region', $region ); } if ( $city != '' ) { $current_location = get_actual_location_name( 'city', $city ); } $replace_location = $current_location != '' ? $current_location : $replace_location; } $geodir_meta_keys = ''; $geodir_meta_desc = ''; if ( $is_geodir_page && ! empty( $geodir_post_type_info ) ) { if ( $geodir_is_page_listing || $geodir_is_search || geodir_is_page( 'add-listing' ) ) { $geodir_meta_keys = isset( $geodir_post_type_info->seo['meta_keyword'] ) && $geodir_post_type_info->seo['meta_keyword'] != '' ? $geodir_post_type_info->seo['meta_keyword'] : $geodir_meta_keys; $geodir_meta_desc = isset( $geodir_post_type_info->description ) ? $geodir_post_type_info->description : $geodir_meta_desc; $geodir_meta_desc = isset( $geodir_post_type_info->seo['meta_description'] ) && $geodir_post_type_info->seo['meta_description'] != '' ? $geodir_post_type_info->seo['meta_description'] : $geodir_meta_desc; if ( $geodir_is_category ) { $category = $geodir_is_category ? get_term_by( 'slug', $geodir_is_category, $category_taxonomy[0] ) : null; if ( isset( $category->term_id ) && ! empty( $category->term_id ) ) { $category_id = $category->term_id; $category_desc = trim( $category->description ) != '' ? trim( $category->description ) : geodir_get_tax_meta( $category_id, 'ct_cat_top_desc', false, $geodir_post_type ); if ( $location_id ) { $option_name = 'geodir_cat_loc_' . $geodir_post_type . '_' . $category_id; $cat_loc_option = get_option( $option_name ); $gd_cat_loc_default = ! empty( $cat_loc_option ) && isset( $cat_loc_option['gd_cat_loc_default'] ) && $cat_loc_option['gd_cat_loc_default'] > 0 ? true : false; if ( ! $gd_cat_loc_default ) { $option_name = 'geodir_cat_loc_' . $geodir_post_type . '_' . $category_id . '_' . $location_id; $option = get_option( $option_name ); $category_desc = isset( $option['gd_cat_loc_desc'] ) && trim( $option['gd_cat_loc_desc'] ) != '' ? trim( $option['gd_cat_loc_desc'] ) : $category_desc; } } $geodir_meta_desc = __( "Posts related to Category:", 'geodirectory' ) . " " . geodir_utf8_ucfirst( single_cat_title( "", false ) ) . '. ' . $category_desc; } } else if ( $geodir_is_tag ) { $geodir_meta_desc = __( "Posts related to Tag:", 'geodirectory' ) . " " . geodir_utf8_ucfirst( single_tag_title( "", false ) ) . '. ' . $geodir_meta_desc; } } } $gd_page = ''; if ( geodir_is_page( 'home' ) ) { $gd_page = 'home'; $meta_desc = ( get_option( 'geodir_meta_desc_homepage' ) ) ? get_option( 'geodir_meta_desc_homepage' ) : $meta_desc; } elseif ( geodir_is_page( 'detail' ) ) { $gd_page = 'detail'; $meta_desc = ( get_option( 'geodir_meta_desc_detail' ) ) ? get_option( 'geodir_meta_desc_detail' ) : $meta_desc; } elseif ( geodir_is_page( 'pt' ) ) { $gd_page = 'pt'; $meta_desc = ( get_option( 'geodir_meta_desc_pt' ) ) ? get_option( 'geodir_meta_desc_pt' ) : $meta_desc; } elseif ( geodir_is_page( 'listing' ) ) { $gd_page = 'listing'; $meta_desc = ( get_option( 'geodir_meta_desc_listing' ) ) ? get_option( 'geodir_meta_desc_listing' ) : $meta_desc; } elseif ( geodir_is_page( 'location' ) ) { $gd_page = 'location'; $meta_desc = ( get_option( 'geodir_meta_desc_location' ) ) ? get_option( 'geodir_meta_desc_location' ) : $meta_desc; $meta_desc = apply_filters( 'geodir_seo_meta_location_description', $meta_desc ); } elseif ( geodir_is_page( 'search' ) ) { $gd_page = 'search'; $meta_desc = ( get_option( 'geodir_meta_desc_search' ) ) ? get_option( 'geodir_meta_desc_search' ) : $meta_desc; } elseif ( geodir_is_page( 'add-listing' ) ) { $gd_page = 'add-listing'; $meta_desc = ( get_option( 'geodir_meta_desc_add-listing' ) ) ? get_option( 'geodir_meta_desc_add-listing' ) : $meta_desc; } elseif ( geodir_is_page( 'author' ) ) { $gd_page = 'author'; $meta_desc = ( get_option( 'geodir_meta_desc_author' ) ) ? get_option( 'geodir_meta_desc_author' ) : $meta_desc; } elseif ( geodir_is_page( 'login' ) ) { $gd_page = 'login'; $meta_desc = ( get_option( 'geodir_meta_desc_login' ) ) ? get_option( 'geodir_meta_desc_login' ) : $meta_desc; } elseif ( geodir_is_page( 'listing-success' ) ) { $gd_page = 'listing-success'; $meta_desc = ( get_option( 'geodir_meta_desc_listing-success' ) ) ? get_option( 'geodir_meta_desc_listing-success' ) : $meta_desc; } if ( $meta_desc ) { $meta_desc = stripslashes_deep( $meta_desc ); /** * Filter page description to replace variables. * * @since 1.5.4 * * @param string $title The page description including variables. * @param string $gd_page The GeoDirectory page type if any. */ $meta_desc = apply_filters( 'geodir_seo_meta_description_pre', __( $meta_desc, 'geodirectory' ), $gd_page, '' ); /** * Filter SEO meta description. * * @since 1.0.0 * * @param string $meta_desc Meta description content. */ echo apply_filters( 'geodir_seo_meta_description', '', $meta_desc ); } // meta keywords if ( isset( $post->post_type ) && in_array( $post->post_type, $all_postypes ) ) { $place_tags = wp_get_post_terms( $post->ID, $post->post_type . '_tags', array( "fields" => "names" ) ); $place_cats = wp_get_post_terms( $post->ID, $post->post_type . 'category', array( "fields" => "names" ) ); $meta_key .= implode( ", ", array_merge( (array) $place_cats, (array) $place_tags ) ); } else { $posttags = get_the_tags(); if ( $posttags ) { foreach ( $posttags as $tag ) { $meta_key .= $tag->name . ' '; } } else { // $tags = get_tags( array( 'orderby' => 'count', 'order' => 'DESC' ) ); // $xt = 1; // // foreach ( $tags as $tag ) { // if ( $xt <= 20 ) { // $meta_key .= $tag->name . ", "; // } // // $xt ++; // } } } $meta_key = $meta_key != '' ? rtrim( trim( $meta_key ), "," ) : $meta_key; $geodir_meta_keys = $geodir_meta_keys != '' ? ( $meta_key != '' ? $meta_key . ', ' . $geodir_meta_keys : $geodir_meta_keys ) : $meta_key; if ( $geodir_meta_keys != '' ) { $geodir_meta_keys = strip_tags( $geodir_meta_keys ); $geodir_meta_keys = esc_html( $geodir_meta_keys ); $geodir_meta_keys = geodir_strtolower( $geodir_meta_keys ); $geodir_meta_keys = wp_html_excerpt( $geodir_meta_keys, 1000, '' ); $geodir_meta_keys = str_replace( '%location%', $replace_location, $geodir_meta_keys ); $meta_key = rtrim( trim( $geodir_meta_keys ), "," ); } if ( $meta_key ) { $meta_key = stripslashes_deep( $meta_key ); /** * Filter SEO meta keywords. * * @since 1.0.0 * * @param string $meta_desc Meta keywords. */ echo apply_filters( 'geodir_seo_meta_keywords', '', $meta_key ); } }