Здесь может быть Ваша реклама. Рекламное место сдается.
bmd-gr.3dn.ru - Найдется все!
BmD Grоup
Дизайн-студия BmD
Все для Web-мастера
Все для Photoshop
Все для компьютера
Все для игр
Клан BmD
Развлечения
Наши услуги
 Сайт
Главная Контакты В избранное
  • Как Вы попали на наш сайт

    Проголосовало: 1704

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Популярное

    Скоро здесь появятся баннеры наших партнеров. Если Вы хотите стать нашим партнером, зайдите на форум в раздел "баннерообмен".
    Powered by BealchMonD Group. BmD.3dn.ru

    РЕКЛАМА

    Свободное место для Вашей рекламы. По вопросам размещения рекламы на этом сайте пишите администратуру сайта (Bokoffi) или на форуме.
  • Как отредактировать фид RSS WordPress

    Представьте себе, что вы можете улучшить ваш фид RSS в WordPress? Хотите, чтобы он содержал больше (или меньше) контента? Или добавить несколько дополнительных деталей в конец вашей заметки?

    В данном уроке будет показано, как:

    • Включить в фид и записи и страницы.
    • Добавить миниатюры к вашему фиду.
    • Исключить записи с определенными метками
    • Установить сколько записей будут появляться в вашем фиде (без влияния на остальную часть сайта).
    • Показывать только записи из определенной категории.
    • Добавить контент в конец каждой записи (например, ссылку на вашу последнюю особенную запись).

    Все это выполняется в файле functions.php темы, используемой на вашем сайте. Если такого файла нет, просто создайте его в папке темы! (Помните, что в статье приведен код PHP).

    Включаем страницы в фид WordPress

    Нужно добавить фильтр WordPress, когда он ищет записи. Фильтр проверяет, предназначена ли запись для фида, и если это так, то используется запрос для добавления и записи и страницы.


    1function feedFilter($query) {
    2    if ($query->is_feed) {
    3        $query->set('post_type','any');
    4        }
    5    return $query;
    6}
    7add_filter('pre_get_posts','feedFilter');

    Если вы хотите показывать только страницы, то нужно изменить слово ‘any’ на ‘page’ (или на имя любого произвольного типа заметок, который вы создали).

    Если нужно показывать только страницы верхнего уровня, то нужно использовать следующий код:


    1function feedFilter($query) {
    2    if ($query->is_feed) {
    3        $query->set('post_type','any');
    4        $query->set('post_parent','0');
    5        }
    6    return $query;
    7}
    8add_filter('pre_get_posts','feedFilter');

    Добавляем миниатюры к фиду RSS

    Обработка в этот раз немного отличается. Нам снова нужно добавить фильтр к запросу и проверять, назначена ли страница для фида RSS. Но в этот раз надо добавить фильтр к the_content (то есть контенту записи).


    01function feedFilter($query) {
    02    if ($query->is_feed) {
    03        add_filter('the_content', 'feedContentFilter');
    04        }
    05    return $query;
    06}
    07add_filter('pre_get_posts','feedFilter');
    08  
    09function feedContentFilter($content) {
    10    $thumbId = get_post_thumbnail_id();
    11  
    12    if($thumbId) {
    13        $img = wp_get_attachment_image_src($thumbId);
    14        $image = '<img align="left" src="'. $img[0] .'" alt="" width="'. $img[1] .'" height="'. $img[2] .'" />';
    15        echo $image;
    16    }
    17  
    18    return $content;
    19}

    Для изображения используется align="left", чтобы придать выводу форматированный вид. Многие читатели фида RSS будут отключать использование CSS, но использование старого доброго атрибута должно  сработать.

    Вы можете использовать код для получения любого размера миниатюры. Например, можно добавить следующую строку к файлу functions.php для определения размера миниатюры только для фида:


    1add_image_size('feed', 600, 100, true);

    Затем нужно будет поменять строчку в коде фильтра на:


    1$img = wp_get_attachment_image_src($thumbId, 'feed');

    Как исключить записи с определенной меткой

    В этот раз мы будем делать операцию, очень похожую на первый пример. Будет использоваться ‘set’ для настройки объекта запроса.

    Нюанс заключается в том, что нужно сначала получить ID метки, которую надо исключить. Для этого нужно  перейти в консоли администратора на панель Записи > Метки, затем найти нужную метку и нажать на ней кнопку мыши. В строке адреса браузера id метки можно найти в конце URL. Она будет выглядеть примерно так: &tag_ID=29

    В нашем примере мы исключаем записи с меткой, ID которой имеет значение 29.


    1function feedFilter($query) {
    2    if ($query->is_feed) {
    3        $tags = array('29');
    4        $query->set('tag__not_in', $tags);
    5    }
    6  
    7    return $query;
    8}
    9add_filter('pre_get_posts','feedFilter');

    Если нужно исключить записи, соответствующие нескольким метками, то делается это так:


    1$tags = array('29', '31', '124');

    Контролируем, сколько записей появятся в фиде

    В панели администратора на панели Параметры > Чтение можно установить, сколько записей будет показано на страницах сайта и в фиде. Однако, часто требуется показывать в фиде больше записей, чем выводится на сайте.

    Например, сайт может выглядеть отлично с 3 или 4 записями на странице, но вы хотите выводить большее количество в фид!

    Для этого можно использовать код:


    1function feedFilter($query) {
    2    if ($query->is_feed) {
    3        $query->set('posts_per_page','20');
    4    }
    5  
    6    return $query;
    7}
    8add_filter('pre_get_posts','feedFilter');

    Число 20 можно заменить на любое, какое нужно.

    Показываем записи только из одной категории

    Обычно в блогах не используются такие функции, но если WordPress служит в качестве CMS, то может возникнуть желание публиковать записи только из категории "blog". В таком случае можно использовать следующий код:


    1function feedFilter($query) {
    2    if ($query->is_feed) {
    3        $query->set('category_name', 'blog');
    4    }
    5  
    6    return $query;
    7}
    8add_filter('pre_get_posts','feedFilter');

    Можно также исключать записи любой заданной категории, только нужно использовать соответствующие установки:

    1$query->set('cat', '-45');

    В данном случае исключаются записи из категории с ID 45. Знак "минус" нужен непременно, так как без него будут исключаться записи из категории с именем "45".

    Добавляем контент в конец каждой записи RSS

    Существует множество причин, по которым нужно добавлять что-то в конец записи RSS. Например, добавляется приветствие со ссылкой на блог.


    01function feedFilter($query) {
    02    if ($query->is_feed) {
    03        add_filter('the_content','feedContentFilter');
    04    }
    05    return $query;
    06}
    07add_filter('pre_get_posts','feedFilter');
    08  
    09function feedContentFilter($content) {
    10    $content .= '<p>Спасибо за внимание. Следите за блогом <a href="'. get_bloginfo('url') .'">'. get_bloginfo('name') .'</a>!</p>';
    11  
    12    return $content;
    13}

    Теперь давайте сделаем что-нибудь более интересное. Допустим у вас есть слайдер специального контента на сайте, или список специальных записей на боковой панели, и нужно сделать так, чтобы при размещении записи добавлялась метка на эти особенные записи.

    В этом примере мы будем добавлять строку к записи в фид:

    "Не пропустите наш последний специальный материал: 'заголовок записи'"

    В функции feedContentFIlter мы будем формировать запрос на получение последней особенной записи с меткой "featured". А затем мы будем использовать объект записи для установки заголовка и адреса.


    01function feedFilter($query) {
    02    if ($query->is_feed) {
    03        add_filter('the_content','feedContentFilter');
    04    }
    05    return $query;
    06}
    07add_filter('pre_get_posts','feedFilter');
    08  
    09function feedContentFilter($content) {
    10  
    11    $args = array(
    12        'numberposts' => 1,
    13        'tag' => 'featured'
    14    );
    15    $posts = get_posts($args);
    16  
    17    if($posts) {
    18        foreach($posts as $post) {
    19            $content .= '<p>Не пропустите наш последний специальный материал: <a href="'. get_permalink($post->ID) .'">'. $post->post_title .'</a>!</p>';
    20        }
    21    }
    22  
    23    return $content;
    24}

    Вы можете изменить функцию так как нужно, например, добавить встроенные правила CSS для форматирования строки.

  •  
  • Облако тэгов

    Designed by BmD Group
Сделать бесплатный сайт с uCoz