Function Reference: geodir_check_term_to_post_slug

Summary

Check whether a post name with slug exists or not.

Global Values

$wpdb
(object) (required) WordPress Database object.

Default: None
$gd_term_post_type
(array) (required) Cached array for term post type.

Default: None
$gd_term_taxonomy
(array) (required) Cached array for term taxonomy.

Default: None
$sitepress
(object) (required) Sitepress WPML object.

Default: None

Parameters

$slug_exists
(bool) (required)

Default: : false
$slug
(string) (required) Term slug.

Default: None
$term_id
(int) (required) The term ID.

Default: None

Return Values

(bool)
  • true when exists.
  • false when not exists.

Change Log

Since: 1.6.20

Source File

geodir_check_term_to_post_slug() is located in geodirectory_hooks_actions.php [Line: 3073]

Source Code

function geodir_check_term_to_post_slug( $slug_exists, $slug, $term_id ) {
    global $wpdb, $gd_term_post_type, $gd_term_taxonomy, $sitepress;
    
    if ( $slug_exists ) {
        return $slug_exists;
    }
    
    if ( !empty( $gd_term_taxonomy ) && isset($gd_term_taxonomy[$term_id]) ) {
        $taxonomy = $gd_term_taxonomy[$term_id];
    } else {
        $taxonomy = $wpdb->get_var( $wpdb->prepare( "SELECT taxonomy FROM $wpdb->term_taxonomy WHERE term_id = %d LIMIT 1", $term_id ) );
        $gd_term_taxonomy[$term_id] = $taxonomy;
    }
    
    if ( empty($taxonomy) ) {
        return $slug_exists;
    }
    
    if ( !empty( $gd_term_post_type ) && $gd_term_post_type[$term_id] ) {
        $post_type = $gd_term_post_type[$term_id];
    } else {
        $taxonomy_obj = get_taxonomy( $taxonomy );
        $post_type = !empty( $taxonomy_obj->object_type ) ? $taxonomy_obj->object_type[0] : NULL;
    }
    
    $wpml_post_join = "";
    $wpml_post_where = "";
    
    if (geodir_wpml_is_taxonomy_translated($taxonomy) || geodir_wpml_is_post_type_translated($post_type)) {
        $term_language = $term_id ? geodir_get_language_for_element($term_id, 'tax_' . $taxonomy) : $sitepress->get_current_language();
        if (!$term_language) {
            $term_language = $sitepress->get_current_language();
        }
        
        $wpml_post_join = " JOIN {$wpdb->prefix}icl_translations AS icl_t ON p.ID = icl_t.element_id AND icl_t.element_type = CONCAT('post_', p.post_type)";
        $wpml_post_where = " AND icl_t.language_code = '" . $term_language ."'";
    }
    
    if ( $post_type && $wpdb->get_var( $wpdb->prepare( "SELECT p.post_name FROM $wpdb->posts p {$wpml_post_join} WHERE p.post_name = %s AND p.post_type = %s  {$wpml_post_where} LIMIT 1", $slug, $post_type ) ) ) {
        $slug_exists = true;
    }

    return $slug_exists;
}