Название WordPress как ключевые слова (теги) с исключенными стоп-словами

Как изменить нормальное предложение WordPress title на список «tag like» с исключенными словами «stop words».

Пример:

«Это одно название тестового сообщения о чем-то».

Для того, чтобы:

«один, тест, должность, название, что-то»

Это моя функция, которая исключает слова черного списка (слова остановки) и слова с менее чем 3 символами (как правило, также останавливают слова).

<?php // Post title as keywords, excluded stop words function title_as_keywords( $word ) { $blacklist = array('this', 'about', 'that', 'them'); // Excluded words ... if ( !in_array( $word, $blacklist ) && strlen( $word ) > 3 ) { //Exclude words with less than 4 characters $word_with_comma = '' .$word. ', '; // Separate words with comma return $word_with_comma; } else { return ''; } // Return nothing for black list words or words with less than 4 characters } ?> <?php $title = get_the_title( $post->post_parent ); // Get title $parts = explode( ' ', $title ); echo title_as_keywords( $parts[0] ); echo title_as_keywords( $parts[1] ); echo title_as_keywords( $parts[2] ); echo title_as_keywords( $parts[3] ); //... ?> 

Проблемы: Это работает нормально, но для этого требуется тонкая настройка. Это даст следующий результат:

«тест, почта, название, что-то»,

Задача 1:

Я хотел бы отобразить последнее слово без «,» в конце.

Проблема 2:

Он исключает слово «один» (потому что он имеет длину 3 символа), я могу установить его, чтобы он включал слова с 3 символами, но мне придется создать длинный черный список, чтобы включить 3 символа остановки слов (кто, она, она , его ее…).

Solutions Collecting From Web of "Название WordPress как ключевые слова (теги) с исключенными стоп-словами"

Вот ваша обновленная функция, решая ваши 2 проблемы:

 // Post title as keywords, excluded stop words function title_as_keywords( $word ) { $blacklist = array('this', 'about', 'that', 'them'); // Excluded words ... $whitelist = array('one', 'man', 'boy'/*etc..*/); // Whitelisted words ... if ( (!in_array( $word, $blacklist ) && strlen( $word ) > 3 ) || in_array($word, $whitelist)) { //Exclude words with less than 4 characters $word_with_comma = '' .$word. ', '; // Separate words with comma return $word_with_comma; } else { return ''; } // Return nothing for black list words or words with less than 4 characters } $title = get_the_title( $post->post_parent ); // Get title $parts = explode( ' ', $title ); $str = ''; foreach ($parts as $word) { $str.= title_as_keywords($word); } $str = substr($str, 0,-2); echo $str; 

Надеюсь, это поможет 🙂