• Resolved Konstantin

    (@kansiweb)


    Добрый день! Спасибо за отличный плагин.

    Столкнулся с тем, что после добавления кода для уменьшения количества слов в слаге не срабатывает проверка на уникальность слага ни из этого кода ни в плагине. И в итоге появилась возможность плодить записи с одинаковыми слагами.

    -Можете порекомендовать как решить эту проблему?
    -Не планируете ли добавить в плагин возможность ограничивать количество слов/символов в слаге, дабы избежать подобных конфликтов в будущем?

    Код даю ниже:

    function pm_trim_native_slug($slug, $post_ID, $post_status, $post_type, $post_parent) {
    	global $wpdb;
    
    	$max_words = 5; // Limit the number of words to 5; This value can be changed.
    	$words = explode('-', $slug);
    
    	if(count($words) > $max_words) {
    		$slug = implode("-", array_slice($words, 0, $max_words));
    
    		// Make the slugs unique
    		$check_sql       = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1";
    		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_ID));
    
    		if($post_name_check) {
    			$suffix = 2;
    			do {
    				$alt_post_name = _truncate_post_slug($slug, 200 - (strlen($suffix) + 1)) . "-$suffix";
    				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_type, $post_ID, $post_parent));
    				$suffix++;
    			} while ($post_name_check);
    			$slug = $alt_post_name;
    		}
    	}
    
    	return $slug;
    }
    add_filter('wp_unique_post_slug', 'pm_trim_native_slug', 99, 5);
Viewing 2 replies - 1 through 2 (of 2 total)
  • Plugin Author kaggdesign

    (@kaggdesign)

    Спасибо за отзыв.

    Мы не ппланируем брать на себя функции ядра, так что проверки на уникальность не будет.

    Ваш код не работает вследсвие ошибки в нём или неправильного использования. Глядя на код, я вижу, что это выдернутый кусок из функции ядра wp_unique_post_slug() для attachments. По идее, он должен работать. Хотя, конечно, лучше после уменьшение числа слов деактивировать свой хук, вызвать wp_unique_post_slug() и активировать свой хук снова.

    Задайте вопрос на Stackoverflow RU [wordpress], я постараюсь вам помочь.

    Thread Starter Konstantin

    (@kansiweb)

    Спасибо за ответ!
    Вопрос задал

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Обрезка слага и конфликт уникальности’ is closed to new replies.