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



 

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

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

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Вывести php три месяца и год в worpdress
koninana
koninana
Topic Starter сообщение 6.11.2016, 18:02; Ответить: koninana
Сообщение #1


Друзья, привет!

Такая задачка есть. На ряде страниц сайта на CMS Wordpress нужно вывести строку текста, которая бы обновлялась сама.
А именно:
%название предыдущего месяца%, %название текущего месяца%, %название следующего месяца%, %текущий год%

То есть на сегодняшний месяц результатом вывода должно быть:
Октябрь, Ноябрь, Декабрь, 2016


Товарищи программисты, выручайте :blush:

Сообщение отредактировал koninana - 6.11.2016, 18:04
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Karlasan
Karlasan
сообщение 6.11.2016, 21:01; Ответить: Karlasan
Сообщение #2


Код
<?php
setlocale(LC_ALL, 'ru_RU.UTF-8');
print strftime("%B",strtotime("-1 month")).", ".strftime("%B").", ".strftime("%B",strtotime("+1 month")).", ".date("Y");

?>


Сообщение отредактировал Karlasan - 6.11.2016, 21:02


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


Karlasan, Спасибо огромное! Работает :)

Еще момент подскажите...
Как реализовать более удобную вставку непосредственно в сам пост\страницу? (Было бы чудесно что-либо шорт кода — взял и вставил на ряд страниц, внутрь, прямо по тексту. Еще неплохо было бы иметь возможность подставлять в тайтл\дескрипшн) Сориентируйте пожалуйста, в какую сторону мыслить, как реализовать практичнее, удобнее, корректнее.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Karlasan
Karlasan
сообщение 6.11.2016, 21:35; Ответить: Karlasan
Сообщение #4


koninana,
в конец файла functions.php вашей темы (находится в папке /wp-content/themes/имя_темы) добавьте код
Код
function superdata( $atts ){
    setlocale(LC_ALL, 'ru_RU.UTF-8');
    return strftime("%B",strtotime("-1 month")).", ".strftime("%B").", ".strftime("%B",strtotime("+1 month")).", ".date("Y");
}
add_shortcode( 'superdata', 'superdata' );


затем в тексте вставлем [superdata] и будет вам счастье.
в тайтлы и метатеги посложнее чуток. ищем в коде шаблона файлик, отвечающий за вывод метатегов (обычно это header.php, но из него могут и другие файлы подгружаться), и вставляем нужный код в нужное место. вот, например, так:
Код
<title><?php bloginfo('name'); ?><?php wp_title(); ?><?php setlocale(LC_ALL, 'ru_RU.UTF-8'); print  strftime("%B",strtotime("-1 month")).", ".strftime("%B").", ".strftime("%B",strtotime("+1 month")).", ".date("Y"); ?></title>

этот код выведет что-то вроде "Имя блога Название записи Октябрь, Ноябрь, Декабрь, 2016"
имейте в виду, что разные сео-плагины могут перезаписать значения тайтлов и метатегов.
можно, конечно, через функционал вп всё это сделать, но мне лень думать, как :) в большинстве случаев приведенный код будет работать и без этого.



Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
koninana
koninana
Topic Starter сообщение 7.11.2016, 6:30; Ответить: koninana
Сообщение #5


Karlasan, прям выручаете, спасаете, спасибо, все работает!


Цитата(Karlasan @ 6.11.2016, 20:35) *
имейте в виду, что разные сео-плагины могут перезаписать значения тайтлов и метатегов.
можно, конечно, через функционал вп всё это сделать, но мне лень думать, как :) в большинстве случаев приведенный код будет работать и без этого.


Тут верно все предвидели. Использую Yoast SEO, так, что тайтлы не взлетят так.
Есть возможность через него сделать как-то нужный тайтл, дескрипшн по формуле? В его родных переменных только дату поста\записи вставить можно только.
Или может подскажете, где покопать инфо о том, как средствами ВП это реализовать?

Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Karlasan
Karlasan
сообщение 7.11.2016, 11:51; Ответить: Karlasan
Сообщение #6


koninana,
без ковыряния в коде плагина, видимо, никак. ну и при обновлении плагина все правки слетят. так что можно вот так, дешево и сердито, перехватив буфер вывода:

Код
function buffer_callback($buffer)
{
    setlocale(LC_ALL, 'ru_RU.UTF-8');
    $buffer=str_replace("[superdata]", strftime("%B", strtotime("-1 month")).", ".strftime("%B").", ".strftime("%B", strtotime("+1 month")).", ".date("Y"), $buffer);
    return $buffer;
}

function buffer_start() { ob_start("buffer_callback"); }

function buffer_end() { ob_end_flush(); }

add_action( 'template_redirect', 'buffer_start');
add_action('wp_footer', 'buffer_end');


поместите его также в functions.php. этот код заменяет шорткод [superdata] во всей странице, где бы он ни находился. если какой-то плагин (да тот же yoast) уже использует буфер вывода - этот код также может не заработать :)

Сообщение отредактировал Karlasan - 7.11.2016, 11:51


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
koninana
koninana
Topic Starter сообщение 23.12.2016, 6:58; Ответить: koninana
Сообщение #7


Karlasan, Почему на другом хостинге выводятся названия месяцев на английском? Мы же четко setlocale задали. Все равно по буржуйски выводится (
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mmkulikov
mmkulikov
сообщение 23.12.2016, 16:33; Ответить: mmkulikov
Сообщение #8


Цитата(koninana @ 23.12.2016, 4:58) *
Мы же четко setlocale задали.

Это скорее пожелание чем задание.
Есть у сервера локаль - выведет, нету - выведет дефолтной локалью...


--------------------
Сдается, обращаться скайп avdesk-it-kmm
VPS от 5€


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
koninana
koninana
Topic Starter сообщение 23.12.2016, 16:38; Ответить: koninana
Сообщение #9


mmkulikov, Есть возможность все таки как-то по-русски названия месяцев вывести в таки условиях :)?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mmkulikov
mmkulikov
сообщение 24.12.2016, 17:05; Ответить: mmkulikov
Сообщение #10


Цитата(koninana @ 23.12.2016, 14:38) *
Есть возможность все таки как-то по-русски названия месяцев вывести в таки условиях

Если надо "жестко" на русском - откажитесь от strftime и сделайте свою функцию вывода названия месяца...
Банально определите массив с именами месяцев и выводите по индексу(номеру месяца)


--------------------
Сдается, обращаться скайп avdesk-it-kmm
VPS от 5€
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
28 freeax 4582 12.4.2024, 1:22
автор: PostMan1
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3387 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1237 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44889 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1885 26.5.2023, 20:48
автор: Mixatraider


 



RSS Текстовая версия Сейчас: 16.4.2024, 22:18
Дизайн