X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V  < 1 2 3 >
Открыть тему
Тема закрыта
> Генерация Keywords в Wordpress
mialpet
mialpet
сообщение 14.8.2014, 19:42; Ответить: mialpet
Сообщение #12


Собирая по крупице из каждого поста :)
Код
<meta name="keywords" content="<?php echo str_replace(' ', ',', get_the_title()) ?>" />

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


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
lamov
lamov
Topic Starter сообщение 14.8.2014, 21:05; Ответить: lamov
Сообщение #13


mialpet, да, все работает :)
Спасибо всем за ответы!

В общем нужно убрать еще предлоги, союзы, знаки препинания и символы (, . / \ | - _)

Прошу поделиться решением, если таковое будет. Заранее благодарен! *yahoo*
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Яков_Деменьтев
Яков_Деменьтев
сообщение 14.8.2014, 21:25; Ответить: Яков_Деменьтев
Сообщение #14


lamov, я ж тебе написал используй сравнение по in_array проверяя каждую букву. Примеров в интернете туча и вагон. С телефона пишу, не удобно печатать.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
lamov
lamov
Topic Starter сообщение 14.8.2014, 22:27; Ответить: lamov
Сообщение #15


Яков_Деменьтев, тестировал и твой метод - работает тоже на отлично!

Проблема в том, что я в php не очень :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Яков_Деменьтев
Яков_Деменьтев
сообщение 15.8.2014, 13:02; Ответить: Яков_Деменьтев
Сообщение #16


Как-то так
Код
function wp_autokeywords(){

$title=get_the_title();
$i=0;
while ($i<strlen($title)){
if (in_array($title[$i],array(',','.','!','?','!?',':'))){
for ($j=$i;$j<(strlen($title)-1);$j++){$title[$j]=$title[$j+1];}
$title=subsrt($title,0,strlen($title)-1);
}
$i=$i+1;
}

$title = str_replace(" ",", ", $title);
echo '<meta name="keywords" content="'.$title.'" />';
}

Знаки сами пропишите в array, кавычки и прочее, потому что бывают разные потребности. Вот сюда:
Код
array(',','.','!','?','!?',':')

И ещё, под тире по идее отдельная проверка должна быть, потому что есть слова с тире. Самый простой вариант добавить:
Код
$title = str_replace("- ","", $title);


Сообщение отредактировал Яков_Деменьтев - 15.8.2014, 13:04
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mialpet
mialpet
сообщение 17.8.2014, 14:32; Ответить: mialpet
Сообщение #17


Яков_Деменьтев, а как же предлоги?
В общем вот мой вариан, если сразу в шаблон
Код
<?php
$exceptions = array(',', '.', '!', '?', '!?', '?!', ':', ' это ', ' и ', ' по ', ' - ', ' из ');
$keywords = str_replace($exceptions, ' ', mb_strtolower(get_the_title()));
$keywords = str_replace(' ', ',', $keywords);
$keywords = rtrim($keywords, ',');
?>
<meta name="keywords" content="<?php echo $keywords ?>" />

Ну вообще это плохо и лучше один раз написать функцию (видимо в functions.php) и пользоватся ей
Код
function generate_keywords($text)
{
$exceptions = array(',', '.', '!', '?', '!?', '?!', ':', ' это ', ' и ', ' по ', ' - ', ' из ');
$keywords = str_replace($exceptions, ' ', mb_strtolower($text));
$keywords = str_replace(' ', ',', $keywords);
$keywords = rtrim($keywords, ',');
        
return $keywords;
}

А в шаблоне уже писать только
Код
<meta name="keywords" content="<?php echo generate_keywords(get_the_title()) ?>" />

Использование функции гораздо лучше т.к. дописывать исключения надо будет только в одном месте и если какой-нибудь гуру регулярок напишет код в две строки, то его можно будет легко поменять. Не говоря уже о том что ее еще можно доработать, например чтобы не разделяла словосочетания (например "из дерева").
П.С. Чтобы добавить прелоги которые должны удаляться дописываем их в массив $exceptions и важно чтобы с двух сторон от предлога были пробелы, функция не удалит предлог который будет в конце предложения (или в начале), но я не представляю себе таких предложений.

Сообщение отредактировал mialpet - 17.8.2014, 14:33
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
makedonskiy
makedonskiy
сообщение 17.8.2014, 15:36; Ответить: makedonskiy
Сообщение #18


Код
function getWords($str, $glue = ", ", $bad = array('в', 'без', 'до', 'из', 'к', 'на', 'по', 'о', 'от', 'перед', 'при', 'через', 'с', 'у', 'и', 'нет', 'за', 'над', 'для', 'об', 'под', 'про')) {
    if(!preg_match_all('/(?!\d)\w+(\w*-\w*)*/i', $str, $words))
        return false;  
    
    function check(&$item, $key, $bad) {
        $item = mb_strtolower(trim($item));
        if (in_array($item, $bad))
            $item = false;
    }

    if (!array_walk($words[0], 'check', $bad))
        return false;
    
    return implode($glue, array_filter(array_values($words[0])));
}


Использовать вот так

Код
<meta name="keywords" content="<?php echo getWords(get_the_title()); ?>">


Сообщение отредактировал makedonskiy - 17.8.2014, 15:40
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mialpet
mialpet
сообщение 17.8.2014, 17:46; Ответить: mialpet
Сообщение #19


Немного поторопился со знаками, обновленный вариант
Код
function generate_keywords($text)
        {
        $symbols = array(',', '.', '!', '?', '!?' ,'?!', ':');
        $keywords = str_replace($symbols, '', mb_strtolower($text));
        $exceptions = array(' это ', ' и ', ' по ', ' - ', ' из ');
        $keywords = str_replace($exceptions, ' ', $keywords);
        $keywords = str_replace(' ', ',', $keywords);
        
        return $keywords;
        }

makedonskiy, у вас объявление функции внутри другого объявления, разве это работает?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
skael
skael
сообщение 18.8.2014, 4:01; Ответить: skael
Сообщение #20


Цитата(lamov @ 14.8.2014, 20:05) *
В общем нужно убрать еще предлоги, союзы, знаки препинания и символы (, . / \ | - _)

С этим отлично справляется плагин SEO Ultimate. В нем же и ключи сразу настраиваются
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
makedonskiy
makedonskiy
сообщение 18.8.2014, 4:08; Ответить: makedonskiy
Сообщение #21


Цитата(mialpet @ 17.8.2014, 17:46) *
makedonskiy, у вас объявление функции внутри другого объявления, разве это работает?

Конечно работает. А вообще, используйте лучше вариант, который предложил я, так как он намного практичнее и удобнее и даже, возможно, быстрее.

Сообщение отредактировал makedonskiy - 18.8.2014, 4:10
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V  < 1 2 3 >
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужен кодер, чтобы пофиксить ошибку Wordpress после переноса сайта
0 Alex-777 775 7.4.2024, 18:05
автор: Alex-777
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПродам базу сайтов Wordpress в 16 миллионов доменов! Свежая сборка.
17 Boymaster 10800 17.3.2024, 2:53
автор: Boymaster
Открытая тема (нет новых ответов) Перенос сайта на CMS Wordpress
8 freeax 4944 10.3.2024, 14:58
автор: freeax
Открытая тема (нет новых ответов) Как настроить в WordPress для SEO оптимизации
8 rownong27 2470 2.3.2024, 12:59
автор: toplinks
Горячая тема (нет новых ответов) Восстановление сайтов из Вебархива на Wordpress.
39 freeax 32722 14.2.2024, 14:32
автор: freeax


 



RSS Текстовая версия Сейчас: 17.4.2024, 1:13
Дизайн