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;
}