Function Reference: geodir_check_post_to_term_slug
Summary
Filters the unique post slug.
Global Values
- $wpdb
- (object) (required) WordPress Database object.
- Default: None
- $sitepress
- (object) (required) Sitepress WPML object.
- Default: None
Parameters
- $slug
- (string) (required) The post slug.
- Default: None
- $post_ID
- (int) (required) Post ID.
- Default: None
- $post_status
- (string) (required) The post status.
- Default: None
- $post_type
- (string) (required) Post type.
- Default: None
- $post_parent
- (int) (required) Post parent ID.
- Default: None
- $original_slug
- (string) (required) The original post slug.
- Default: None
Change Log
Since: 1.6.20
Source File
geodir_check_post_to_term_slug() is located in geodirectory_hooks_actions.php [Line: 3010]
Source Code
function geodir_check_post_to_term_slug( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) { global $wpdb, $sitepress; if ( $post_type && strpos( $post_type, 'gd_' ) === 0 ) { $wpml_post_join = ""; $wpml_post_where = ""; $wpml_term_join = ""; $wpml_term_where = ""; if (geodir_wpml_is_post_type_translated($post_type)) { $post_language = $post_ID ? $sitepress->post_translations()->get_element_lang_code($post_ID) : $sitepress->get_current_language(); $post_language = $post_language ? $post_language : $sitepress->post_translations()->get_save_post_lang($post_ID, $sitepress); if (!$post_language) { $post_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 = '" . $post_language ."'"; $wpml_term_join = " JOIN {$wpdb->prefix}icl_translations AS icl_t ON icl_t.element_id = tt.term_taxonomy_id AND icl_t.element_type = CONCAT('tax_', tt.taxonomy)"; $wpml_term_where = " AND icl_t.language_code = '" . $post_language ."'"; } $term_slug_check = $wpdb->get_var( $wpdb->prepare( "SELECT t.slug FROM $wpdb->terms AS t LEFT JOIN $wpdb->term_taxonomy AS tt ON tt.term_id = t.term_id {$wpml_term_join} WHERE t.slug = '%s' AND ( tt.taxonomy = '" . $post_type . "category' OR tt.taxonomy = '" . $post_type . "_tags' ) {$wpml_term_where} LIMIT 1", $slug ) ); if ( $term_slug_check ) { $suffix = 1; do { $alt_slug = _truncate_post_slug( $original_slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; $term_check = $wpdb->get_var( $wpdb->prepare( "SELECT t.slug FROM $wpdb->terms AS t LEFT JOIN $wpdb->term_taxonomy AS tt ON tt.term_id = t.term_id {$wpml_term_join} WHERE t.slug = '%s' AND ( tt.taxonomy = '" . $post_type . "category' OR tt.taxonomy = '" . $post_type . "_tags' ) {$wpml_term_where} LIMIT 1", $alt_slug ) ); $post_check = !$term_check && $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 AND p.ID != %d {$wpml_term_where} LIMIT 1", $alt_slug, $post_type, $post_ID ) ); $term_slug_check = $term_check || $post_check; $suffix++; } while ( $term_slug_check ); $slug = $alt_slug; } } return $slug; }