В статье про я рассмотрел примеры и коды для вывода некоторых дополнительных информационных элементов на страницах постов: связных заметок, названий тегов/категорий и т.п. Похожей фишкой также являются ссылки на предыдущие и следующие WordPress записи. Данные линки будут полезны при навигации посетителей сайта, а также являются еще одним способом . Именно поэтому стараюсь добавлять их в каждый свой проект.

В реализации задачи нам помогут 4 функции, о которых расскажу ниже:

Поскольку речь идет о странице постов (Post), то в 99% случаев вам нужно будет редактировать файл шаблона single.php (либо тот, где в вашей теме задается формат вывода единичных статей). Функции используются в цикле Loop. Если же требуется убрать следующие / предыдущие записи в WordPress, то ищите соответствующий код в этом же файле шаблона и удаляйте (или закомментируйте) его.

Функция next_post_link

По умолчанию формируется линк на заметку, имеющую более новую дату создания сразу после текущей (т.к. все посты располагаются в хронологическом порядке). Вот как он выглядит в коде и на сайте:

Синтаксис функции:

  • format (строка) — определяет общий формат генерируемой ссылки, где с помощью переменной %link можете задавать какой-то текст до и после нее. По умолчанию это просто линк со стрелочкой: ‘%link »’
  • link (строка) — анкор ссылки на следующую запись в WordPress, параметр %title подставляет ее заголовок.
  • in_same_term (boolean) — определяет будут ли рассматриваться в работе только элементы из текущей категории. Допустимые значения true / false (1 / 0), по умолчанию второй вариант.
  • excluded_terms (строка или массив) — укажите ID категорий блога, заметки из которых будут исключены из выборки. Допускается либо массив array(2, 5, 4) либо написание в строку через запятую. Полезно при работе с GoGetLinks , когда нужно запретить показ рекламных постов в данном блоке.
  • taxonomy (строка) — содержит название таксономии, из которой берутся следующие записи, если переменная $in_same_term = true.

Судя из скриншота выше, понятно, что все эти параметры не являются обязательными. Вот пример использования функции на одном из моих сайтов:

(следующая статья) %link →","%title", FALSE, 152) ?>

Здесь я задаю свой формат для отображения линка + исключаю из выборки все элементы, принадлежащие разделу ID = 152.

Если вам нужно вывести в WordPress следующий пост из той же категории, то пригодится код ниже (при этом игнорируется раздел ID = 33):

Когда хотите работать только с текущей конкретной таксономией, указывайте ее название в параметрах (например, testimonial):

>", TRUE, " ", "testimonial"); ?>

Функция previous_post_link

Принцип работы с предыдущими записями WordPress аналогичен приведенному выше описанию, как и синтаксис. Выглядит так:

Соответствующий код:

  • format (строка) — задает формат , за которую отвечает переменная %link (добавляйте текст/теги до и после нее). По умолчанию — ‘« %link’.
  • link (строка) — анкор линка, для вставки заголовка пишите %title.
  • in_same_term (boolean) — если значение true, то будут выводиться только объекты из того же раздела блога.
  • excluded_terms — убираем ненужные категории, указывайте ID через запятую (как строку) или массивом.
  • taxonomy (строка) — определяет таксономию выборки предыдущей записи в WordPress, если активен параметр $in_same_term.

В одном из блогов использую:

%link", "<< Предыдущая", TRUE, "33"); ?>

Здесь делаем жирный шрифт + вместо заголовка элемента пишется определенная фраза (хотя лучше в перелинковке использовать тайтл). Выводятся объекты только текущей категории кроме той, у которой ID = 33.

Функция the_post_navigation

Данное решение объединяет обе ссылки на предыдущие и следующие записи WordPress. Это сделано для удобства, заменяет вызов двух функций одной. Если вам нужно получить на выходе HTML код без отображения, применяйте get_the_post_navigation() .

Синтаксис the_post_navigation максимально простой:

Где $args — набор разных не обязательных параметров:

  • $prev_text — анкор предыдущей ссылки (по умолчанию %title).
  • $next_text — аналогично текст линка но уже на следующий пост (изначально %title).
  • $in_same_term (true/false) — позволяет показывать статьи только из текущей таксономии.
  • $excluded_terms — исключаемые ID через запятую.
  • $taxonomy — название таксономии для выборки, если in_same_term = true.
  • $screen_reader_text — заголовок всего блока (по умолчанию — Post navigation).

Таким образом, мы видим, что здесь имеются такие же переменные, как и в прошлых «единичных» функциях previous_post_link, next_post_link: анкоры, выборка по таксономиям и т.п. Использование решения просто сделает ваш код более компактным, да и нет смысла повторять одни и те же параметры два раза.

Рассмотрим самую простую ситуацию, когда нужно вывести по элементам из той же категории:

"следующий: %title", "next_text" => "предыдущий: %title", "in_same_term" => true, "taxonomy" => "category", "screen_reader_text" => "Еще почитать",)); ?>

Функция posts_nav_link

Если я правильно понимаю, то ее можно использовать не только для отображения в единичной записи, но и в категорий, заметках по месяцам, и т.п. То есть в single.php она будет отвечать за ссылки на предыдущие/следующие WordPress статьи, а в архивных — за навигацию по страницам.

Синтаксис posts_nav_link:

  • $sep — разделитель, отображаемый между ссылками (раньше был::, сейчас -).
  • $prelabel — текст линка предыдущих элементов (по умолчанию: « Previous Page).
  • $nxtlabel — текст для следующей страницы/постов (Next Page »).

Вот интересный пример с картинками вместо текстовых линков:

" , "" ) ; ?>

", ""); ?>

Только не забудьте загрузить изображения prev-img.png и next-img.png в директорию images в вашем . Думаю, аналогично добавляется и другой HTML код, если, допустим, нужно использовать какие-то DIV или class при выравнивании.

Итого. По навигации там еще есть несколько других разных функций, которые вы можете найти в кодексе. Надеюсь, с этими все более-менее понятно. Насчет posts_nav_link, если честно, не уверен, позволяет ли выводить предыдущие и следующие записи на единичной странице, т.к. не тестировал, хотя в описании это упоминается. Думаю, в таком случае более эффективно и желательно использовать the_post_navigation, что поновее и с куда бОльшим числом параметров.

Если есть какие-то вопросы по навигации между постами или дополнения, пишите ниже.

Ребята, мы вкладываем душу в сайт. Cпасибо за то,
что открываете эту красоту. Спасибо за вдохновение и мурашки.
Присоединяйтесь к нам в Facebook и ВКонтакте

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

сайт решил обучить вас некоторым тонкостям детища Марка Цукерберга.

1. Читайте скрытые сообщения

Мало кто знает, что в фейсбуке есть два почтовых ящика. Один из них предназначен для сообщений от людей, не являющихся вашими друзьями в фейсбуке. Если вы не знали о втором почтовом ящике, то вы, скорее всего, пропустили приглашения на различные мероприятия от друзей ваших друзей или предложения о встрече от бывших коллег по работе. Чтобы прочесть эти сообщения, вам необходимо кликнуть на иконку «Сообщения», затем нажать на кнопку «Запросы на переписку» и выполнить команду «Посмотреть отфильтрованные запросы».

2. Проверяйте, откуда вы зашли на вашу страницу

В случае если вы сомневаетесь, что покинули свою страницу на компьютере вашего друга, можно кликнуть небольшую направленную вниз стрелку в правом верхнем углу вашего экрана, выбрать «Настройки». Нажмите на кнопку «Безопасность» из появившегося слева списка команд, а затем выберите «Откуда вы вошли» - таким образом вы в любой момент сможете отслеживать все браузеры, на которых выполнен вход в ваш аккаунт. Чтобы покинуть вашу страницу на любом из браузеров, просто нажмите «Закончить действие».

3. Будьте уверены, что никто вас не взломает

Если у вас есть сомнения относительно системы безопасности фейсбука, вы можете воспользоваться кнопкой «Подтверждение входа» в том же отделе «Настройки безопасности». Тем самым система безопасности будет требовать ввести пароль при входе в ваш аккаунт с неизвестного устройства. В случае входа на свою страницу с устройства, которым вы никогда не пользовались, вы должны будете использовать пароль, который будет отправлен на ваш телефон.

4. Назначьте ответственного за ваш профиль

Интересно, что происходит с нашим профилем в социальной сети, когда мы больше не пользуемся им? В фейсбуке у вас также есть возможность выбрать человека, который будет ответственным за вашу страничку в случае вашей смерти, нажав на кнопку «Доверенные контакты» все в тех же «Настройках безопасности». Доверенный контакт не сможет публиковать новости и переписываться от вашего имени. В его полномочия входят смена фотографии профиля и ответы на запросы в друзья.

5. Позвольте себе поностальгировать

Порой нам хочется снова взглянуть на свои старые нелепые фотографии и давнюю переписку с лучшим другом. Для этого необязательно часами прокручивать колесико мышки, а можно просто нажать на иконку с тремя точками в профиле вашего друга и выполнить команду «Посмотреть дружбу».

6. Вспомните свое прошлое в фейсбуке

В фейсбуке у вас есть возможность просмотреть все, что вам когда-либо нравилось, было прокомментировано или опубликовано вами. Просто нажмите на перевернутую вниз стрелку в правом верхнем углу вашей страницы и выберите «Журнал действий».

7. Побудьте в чужой шкуре

Если вы хотите знать, каким выглядит ваш профиль для тех, кто не является вашим другом, нажмите на три точки справа от команды «Посмотреть журнал действий» и выберите «Просмотреть как...» Это даст вам отличную возможность взглянуть на свою страницу глазами незнакомых вам людей.

Казалось бы, Facebook уже значительно упростил управление настройками конфиденциальности, но многочисленные вопросы и жалобы все еще продолжают приходить. На и в комментариях мы практически ежедневно получаем вопросы одинакового содержания: «Как скрыть пост от всех? «, «Не хочу, чтобы меня находили в поиске «, «Как закрыть свою страницу? » и прочие.

Не будем рассматривать все возможности конфиденциальности и писать онлайн-пособие. Все это вы без труда сможете найти в справочном центре Facebook. Попробуем лишь выделить наиболее популярные вопросы и дать максимально краткие и понятные ответы.

Видимость публикаций

Самый популярный вопрос. А на самом деле все элементарно. Мы можем сделать видимыми публикации для таких вариантов:

  • Видимые для всех
  • Видимые для друзей
  • Видимые для друзей, кроме знакомых
  • Видимые только для меня
  • Видимые для списка людей
  • Видимые для всех, кроме списка людей

Настройки : переходим в Настройки Конфиденциальность Кто может видеть мои материалы?

И выбираете нужный вам маркер. Если хотите настроить видимость для отдельного списка пользователей, то выбирайте Настройки пользователя .

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

Видимость хроники

Второй по популярности вопрос: «Как сделать хронику невидимой? «. К сожалению (или, скорее, к статью), быть невидимкой в Facebook нельзя. Вы можете скрывать/открывать посты, фотографии, личную информацию, но не скрыть профиль целиком. Единственный вариант — убрать хронику из поисковой выдачи.

Настройки : Конфиденциальность

Надоедливые пользователи

Facebook — это вам не ВКонтакте, тут значительно меньше спама и выше культура общения, но рано или поздно все равно повстречаются персонажи, которые попытаются «впарить» вам какой-нибудь товар, пригласить на очередной бизнес-тренинг или просто надоедающие глупыми вопросами. Со спамом можно бороться путем усиления фильтрации или вовсе персональным баном.

Как вы знаете, в Facebook есть две папки личных сообщений. Первая — Входящие , вторая — Другие . С входящими понятно, а вот другие — это что-то вроде папки «спам» в почтовых сервисах. Переключив фильтр в режим Усиленная фильтрация , вы будете получать сообщения в папку Входящие только от своих друзей. Все остальное будет сваливаться в Другие без каких-либо уведомлений.

Еще одна полезная особенность — это полная блокировка пользователя. Добавьте его имя в поле ввода (как на скриншоте ниже) и забудьте о его присутствии.

Обратная связь

Связаться с администрацией Facebook напрямую (через email, телефон и т.д.) — нельзя. Для этого есть форма обратной связи.

  • Быстрые настройки конфиденциальности позволяют менять основные параметры «на лету»
  • Обязательно освойте Журнал действий . Через него вы сможете в любой момент скрыть/открыть в своей хронике любую публикацию.
  • Если что-то не понятно — почитайте справку в

2.
3.
4.
5. Ожидания
6.
7. WebDriver API
8. Приложение: Часто Задаваемые Вопросы

5. Ожидания

В наши дни большинство веб-приложений используют AJAX технологии. Когда страница загружена в браузере, элементы на этой странице могут подгружаться с различными временными интервалами. Это затрудняет поиск элементов, если элемент не присутствует в DOM , возникает исключение ElementNotVisibleException. Используя ожидания, мы можем решить эту проблему. Ожидание дает некий временной интервал между произведенными действиями - поиске элемента или любой другой операции с элементом.

Selenium WebDriver предоставляет два типа ожиданий - неявное (implicit) и явное (explicit). Явное ожидание заставляет WebDriver ожидать возникновение определенного условия до произведения действий. Неявное ожидание заставляет WebDriver опрашивать DOM определенное количество времени, когда пытается найти элемент.

5.1 Явные ожидания

Явное ожидание - это код, которым вы определяете какое необходимое условие должно произойти для того, чтобы дальнейший код исполнился. Худший пример такого кода - это использование команды time.sleep(), которая устанавливает точное время ожидания. Существуют более удобные методы, которые помогут написать вам код, ожидающий ровно столько, сколько необходимо. WebDriverWait в комбинации с ExpectedCondition является одним из таких способов.

From selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Firefox() driver.get("http://somedomain/url_that_delays_loading") try: element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement"))) finally: driver.quit()
Этот код будет ждать 10 секунд до того, как отдаст исключение TimeoutException или если найдет элемент за эти 10 секунд, то вернет его. WebDriverWait по умолчанию вызывает ExpectedCondition каждые 500 миллисекунд до тех пор, пока не получит успешный return. Успешный return для ExpectedCondition имеет тип Boolean и возвращает значение true, либо возвращает not null для всех других ExpectedCondition типов.

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

  • title_is
  • title_contains
  • presence_of_element_located
  • visibility_of_element_located
  • visibility_of
  • presence_of_all_elements_located
  • text_to_be_present_in_element
  • text_to_be_present_in_element_value
  • frame_to_be_available_and_switch_to_it
  • invisibility_of_element_located
  • element_to_be_clickable - it is Displayed and Enabled.
  • staleness_of
  • element_to_be_selected
  • element_located_to_be_selected
  • element_selection_state_to_be
  • element_located_selection_state_to_be
  • alert_is_present
from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) element = wait.until(EC.element_to_be_clickable((By.ID,"someid")))
Модуль expected_conditions уже содержит набор предопределенных условий для работы с WebDriverWait.

5.2 Неявные ожидания

Неявное ожидание указывает WebDriver"у опрашивать DOM определенное количество времени, когда пытается найти элемент или элементы, которые недоступны в тот момент. Значение по умолчанию равно 0. После установки, неявное ожидание устанавливается для жизни экземпляра WebDriver объекта.

From selenium import webdriver driver = webdriver.Firefox() driver.implicitly_wait(10) # seconds driver.get("http://somedomain/url_that_delays_loading") myDynamicElement = driver.find_element_by_id("myDynamicElement")
Перейти к следующей главе.

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

Важно! Будьте уверены, Google прекрасно понимает, что обычные пользователи не будут ими пользоваться и только специалисты по продвижению прибегают к их помощи. Поэтому Google может немного искажать предоставляемую информацию

Оператор Intitle:

Использование: intitle:слово
Пример: intitle:раскрутка сайта
Описание: При использовании этого оператора вы получите список страниц, в заголовке (title) которых есть интересующее вас слово, в нашем случае это фраза «раскрутка сайта» целиком. Обратите внимание на то, что после двоеточия не должно быть пробела. Заголовок страницы имеет важное значение при ранжировании, поэтому отнеситесь к составлению заголовков со всей ответственностью. При использовании этой переменной вы сможете оценить приблизительное количество конкурентов, которые так же хотят быть на лидирующих позициях по этому слову.

Оператор Inurl:

Использование: inurl:фраза
Пример: inurl:расчет стоимости поисковой оптимизации
Описание: Эта команда показывает сайты или страницы, которые имеют в адресе URL исходное ключевое слово. Обратите внимание на то, что после двоеточия не должно быть пробела.

Оператор Inanchor:

Использование: inanchor:фраза
Пример: inanchor:seo книги
Описание: Использование этого оператора поможет вам увидеть страницы, на которые есть ссылки с используемым ключевым словом. Это очень важная команда, но, к сожалению, поисковые машины неохотно делятся этой информацией с оптимизаторами по очевидным причинам. Есть сервисы, Linkscape and Majestic SEO, которые готовы предоставить вам эту информацию за определенную плату, но будьте уверены, информация того стоит.

Так же, стоит помнить, что сейчас Google все больше внимания уделяет «трастовости» сайта и все меньше ссылочной массе. Безусловно, ссылки все еще один из самых важных факторов, но «трастовость» играет все более значимую роль.

Неплохие результаты дает комбинация двух переменных, например intitle:продвижение inanchor:раскрутка сайта. И что же мы видим, поисковая система покажет нам основных конкурентов, в заголовке страницы которых содержится слово «продвижение» и входящими ссылками с анкором «раскрутка сайта ».

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

Оператор Site:

Использование: site:адрес сайта
Пример: site:www.aweb.com.ua
Описание: С помощью этой команды вы можете увидеть список страниц, которые проиндексированы поисковой системой и о которых она знает. Применяется в основном для того, чтобы узнать о страницах конкурентов и проанализировать их.

Оператор Cache:

Использование: cache:адрес страницы
Пример: cache:www.aweb.com.ua
Описание: Эта команда показывает «снимок» страницы с того момента, когда робот заходил на сайт последний раз и вообще, как он видит содержимое страницы. Проверяя дату кэша страницы, вы можете определить, как часто роботы заходят на сайт. Чем более авторитетный сайт, тем чаще роботы на него заходят и соответственно, чем менее авторитетный (по мнению Google) сайт, тем реже роботы делают снимки страницы.

Кэш очень важен при покупке ссылок. Чем ближе дата кэширования страницы к дате покупки ссылки – тем быстрее ваша ссылка будет проиндексирована поисковой системой Google. Иногда получалось находить страницы с возрастом кэша в 3 месяца. Купив ссылку на таком сайте, вы только напрасно потратите свои средства, ведь вполне возможно, что ссылка никогда не будет проиндексирована.

Оператор Link:

Использование: link:url
Пример: link:www.aweb.com.ua
Описание: Оператор link: ищет и показывает страницы, которые ссылаются на указанный адрес url. Это может быть как главная страница сайта, так и внутренняя.

Оператор Related:

Использование: related:url
Пример: related:www.aweb.com.ua
Описание: Оператор related: выводит страницы, которые, по мнению поисковой системы, похожи с указанной страницей. Для человека все полученные страницы могут и не иметь ничего похожего, но для поисковой системы это так.

Оператор Info:

Использование: info:url
Пример: info:www.aweb.com.ua
Описание: При использовании этого оператора, мы сможем получить информацию о странице, которая известна поисковой системе. Это может быть автор, дата публикации и многое другое. Дополнительно, на странице поиска, Google предлагает сразу несколько действий, которые он может сделать с этой страницей. Или, проще говоря, он предложит использовать некоторые операторы, которые мы описали выше.

Оператор Allintitle:

Использование: allintitle:фраза
Пример: allintitle:раскрутка aweb
Описание: Если мы начнем поисковой запрос с этого слова, мы получим список страниц, в заголовке которых есть вся фраза. К примеру, если мы попробуем поискать слово allintitle:раскрутка aweb, то получим список страниц, в заголовке которых упоминаются эти оба слова. И совсем не обязательно они должны идти друг за другом, они могут располагаться в разных местах заголовка.

Оператор Allintext:

Использование: allintext:слово
Пример: allintext:оптимизация
Описание: Этот оператор ищет все страницы, в теле текста которых есть указанное слово. Если мы попробуем использовать allintext:оптимизация aweb, то увидим список страниц, в тексте которых встречаются эти слова. То есть, не вся фраза целиком «оптимизация aweb», а оба слова и «оптимизация» и «aweb».