Gottfrid Q.
Ответы в темах
-
Форум: Темы и шаблоны
Тема: Вывод количества просмотров и комментариевПри установленном WP-post-view выдать просмотры можно функцией
echo_post_views($post_id)
:if (function_exists('echo_post_views')) { echo_post_views(get_post()->ID); }
Каждый такой вызов производит 3 обращения к БД и увеличивает значение счётчика просмотров на 1, поэтому вызывать её следует только на странице поста и только для этого же поста.
Причём при первом вызове для определённого поста функция выдаёт 0, хотя счётчик устанавливается в 1.На странице архива можно аналогичным образом использовать
wp_get_post_views($post_id)
.Форум: Темы и шаблоны
Тема: Вывод количества просмотров и комментариевМожет быть плагин не тот? Я имел в виду этот: https://wordpress.org/plugins/post-views/.
Форум: Темы и шаблоны
Тема: Вывод количества просмотров и комментариевВозникает ли при вызове get_post_views() какое-нибудь сообщение об ошибке?
Присутствует ли в меню «Настройки» пункт «Post Views» и выдаётся ли на его экране информация по просмотрам?Сразу после активации плагина вызов get_post_views(…) для любого поста выдаёт 0.
Форум: Темы и шаблоны
Тема: Вывод количества просмотров и комментариевКоличество одобренных комментариев находится в поле
comment_count
объекта поста:echo '<span class="entry-meta-ncomments">', get_post()->comment_count, '</span>';
Также можно использовать
get_comments()
с аргументом'count' => true
:$n_count = get_comments(array('post_id' => $post_id, 'count' => true, /* другие параметры */ ));
Такой подход выполнит дополнительное обращение к БД. Его имеет смысл использовать, если требуется рассчитать количество комментариев в выборке по определённым параметрам (статус, идентификатор автора и т.д.);
Для подсчёта количества просмотров требуется плагин, считающий просмотры.
Например post-views — он добавит функциюget_post_views()
, использовать которую можно, например, так:if (function_exists('get_post_views')) { $n_views = get_post_views('normal', 'total', 'content', false, get_post()->ID); echo '<span class="entry-meta-nviews">', $n_views, '</span>'; }
Проверка на наличие функции необходима на случай отключения плагина.
- Ответ изменён 8 лет назад пользователем Gottfrid Q.. Причина: в листинге указана переменная $post вместо функции get_post()
Опечатка в строке
var sel = win.sate().get('selection'), att;
.
Должно бытьwin.state()
вместоwin.sate()
.Форум: Проблемы и решения
Тема: передача параметров функции callbackВ этом случае callback должен относиться к классу, которому принадлежит
$data
:class Simple_Shop_Controller { private $view; private $data; // методы $view не имеют доступа к $data ... function create_menu () { add_menu_page( 'Simple Shop Products', ... // аргументы array($this, 'shop_page_cb'), // метод этого же класса ... // остальные аргументы ); } // формирование страницы: public function shop_page_cb () { // здесь имеем доступ как к $view, так и к $data $this->view->create_products($this->data); } }
Метод
shop_page_cb
должен быть публичным, т.к. будет вызываться функциейadd_menu_page
.
Как-то так…Форум: Проблемы и решения
Тема: не работает админпанельОшибка выглядит так, как будто у плагина «Yoast SEO» (размещается в
/wp-content/plugins/wordpress-seo/
) отсутствуют некоторые файлы. Попробуйте его переустановить (деактивировать, удалить, поставить заново и активировать).Страница скрыта: тег
body
имеет классtag
, которому заданоdisplay:none
в/wp-content/themes/SabrinaResponsive/style.css
, строка 669.
Возможно, класс уже предназначался для каких-либо элементов страницы, когда разработчик решил использовать его для страницы архива меток. Поэтому пусть переименует класс, относящийся к странице, вtag-archive
, например, и перенесёт на него с.tag
те функционал и стили, что относятся к странице архива.
Как-то так…Форум: Проблемы и решения
Тема: вхождения в wordpress аккаунтЗайдите в БД и просмотрите графу
user_login
таблицыwp_users
— там будут имена учётных записей всех зарегистрированных пользователей.
Префикс у таблиц может отличаться, стандартный —wp_
.Форум: Темы и шаблоны
Тема: Помогите настроить CSS новостной лентыУ абзацев поста
.art-postcontent.clearfix > p
верхний марджин составляет12px
, а у картинки —0
, и у заголовка нижний марджин тоже0
.
Можно добавитьmargin-bottom:12px;
к заголовкуh2.art-postheader
— с отступом над абзацем он схлопнется, а над картинкой — нет, поэтому она съедет вниз на высоту отступа текста. После этого она ещё слегка выше текста — можно скорректировать, например, верхним марджином уimg.wp-post-image
.
Как-то так…Форум: Проблемы и решения
Тема: Убрать переход по постм.Если правильно понял, речь идёт о списке записей.
Набор действий под элементами списка можно изменить фильтром'post_row_actions'
. Фильтр имеет два аргумента:$actions
— массив вида'action_id' => 'action_link'
;$post
— пост.
Вам надо из массива удалить
$actions['view']
. Т.е. код примерно такой:add_filter('post_row_actions', function ($actions, $post) { if ($post->post_type == 'post') unset($actions['view']); return $actions; }, 10, 2);
Проверка типа поста обязательна, т.к. фильтр обрабатывает посты всех неиерархических типов.
Форум: Проблемы и решения
Тема: Найти скрипт РубрикВиджет «Рубрики» является штатным и находится в
/wp-includes/default-widgets.php
, классWP_Widget_Categories
. Исходники WP и штатных/устанавливаемых тем и плагинов менять не следует — изменения будут потеряны при следующем обновлении; также изменения могут содержать неочевидные ошибки.
Поэтому логично будет запилить дочернюю тему, которая будет использовать twentyfourteen в качестве основной, затем в style.css, после импорта стилей родительской темы, дописать стили для виджета.
Если этого не будет достаточно (т.е. не получится реализовать анимацию силамиtransition
и:hover
) — добавить js-скрипт, реализующий анимацию, и в functions.php надо этот скрипт выдать на страницу по хуку'wp_enqueue_scripts'
. Как-то так…Селекторы элементов виджета: тело —
.widget_categories
, элементы —.cat-item
, дочерние списки —.children
. Т.е. селектор подрубрик выглядит как-то так'.widget_categories .children .cat-item'
.Информация по дочерним темам: https://codex.wordpress.org/Child_Themes.
Тут надо использовать
wp.media
— его надо подключить вызовомwp_enqueue_media()
по хуку'admin_enqueue_scripts'
.
Затем — при первом клике по кнопке — надо создать всплывающее окно. Переменную с ним разместите в родительском замыкании — чтобы создавать его только один раз.
Код примерно таков (возможны опечатки):// замыкание обработчика ready var win; // <-- это - окно со вложениями $("#кнопка").click(function () { if (!win) { // окно не создано - создать: win = wp.media({ title: "Заголовок всплывшего окна", multiple: false, // выбор одного изображения button: { text: "Выбрать", requires: {selection: false} // чтобы можно было сбросить выбор. }, library: {type: "image"} // отоборажать только картинки }); win.on('select', function () { var sel = win.sate().get('selection'), att; if (sel.length) { att = sel.first().toJSON(); // тут обрабатывается выбранная картинка // в att.url - ссылка на атачмент; // в att.id - идентификатор атачмента; // в att.sizes - масштабированные версии атачмента; } else { // выбор не сделан или сброшен } }); win.on('open', function () { // тут надо отметить картинку, которая уже выбрана var att, sel = win.state().get('selection'); sel.reset(); if (/* какой-то атачмент выбран */) { // допустим, что идентификатор атачмента - в att_id att = wp.media.attachment(att_id); att.fetch(); sel.add(att); } }); } win.open(); });
В обработчике
select
ссылки на масштабированные версии изображения находятся вatt.sizes['размер'].url
.
При открытии окна — событиеopen
— отмечается выбранное прежде изображение — имеет смысл только при первом открытии, если выбор был сохранён прежде и не пуст на момент создания окна.Как-то так…
Форум: Темы и шаблоны
Тема: Помогите с поиском в шапке шаблонаКакой-то js-скрипт добавляет к полю ввода
input.searchform-s
стилиdisplay:none
иvisibility:visible
. Вам надоdisplay:none
убрать,visibility:visible
оставить, затем скорректировать dom и стили его и остальной формы поиска (находящуюся в.text-near-menu
; скрипты копируют форму ещё куда-то в#top-bar
, оно там скрыто и находится рядом с синей круглой штукой сверху справа; так что форм на странице две).Навскидку сверстать можно как-нибудь так:
input.searchform-s
, оберните в див, которму дайтеpadding-right:Xpx
, где Xpx — ширина бокса с пиктограммой с лупой (где-то 16-20px), иposition:relative
.
Самinput
—width:100%
,outline:none
иborder:none
.
Рамку и отступы можно привязать прямо к форме или обернуть всё её содержимое в див и привязать к нему.
Ссылкуa.submit
уберите, пиктограмму установите в качестве фона наinput.searchsubmit
, и задайте емуfloat:right
, ширина и высота — размер пиктограммы (16-20px); и пустой value. Также перенесите на него события click сa#trigger-overlay
.
Затем всё это надо покрасить, выровнять и отладить.
Как-то так…Форум: Поиск специалистов
Тема: Нужно сделать плагин каталогаДобрый день.
Возможно. Стоимость и сроки зависят от деталей.
Пишите на dyscolus@yandex.ru.