Понимаю, что тема довольно трудоёмкая, но на уровне "предложения и идеи" имеет место.
В данный момент результат работы шорткода [ratinglist] для post выглядит...не фонтан, скажем так. Имею в виду не стили, а набор данных, которые получает пользователь. Очень хотелось бы видеть список в стандартном для Wordpress формате, как на главной странице блога или на странице рубрики. Сейчас ratinglist очень выбивается из общего формата и не слишком информативен, приходится изобретать собственные расширения.
в стандартном для Wordpress формате
- а какой это формат? Возьмем 1000 вордпресс шаблонов - и формат вывода записей будет разным - т.к. нет такого понятия.
Вы наглядно предлагайте. Здесь я не увидел конкретики, нет элементарного скетча, я уж не говорю о полноценном дизайне на основе которого программист сделает вывод.
Ну кстати да, глуповато я сформулировал.
Напрягает тот факт, что шорткод приходится встраивать в тело страницы: у неё как правило своя разметка. В противном случае можно было бы отредактировать шаблон вывода информации по шорткоду "в лоб", получив недостающие данные и разметив их по аналогии с главной страницей. Только ведь нельзя: у page свои элементы, свои отступы для этих элементов, блоки записей с главной страницы в эту структуру просто так встроить не получится, приходится прописывать новые стили и перекраивать макет.
А ведь по сути список "лучших за X дней" — это тот же самый список записей, что и на главной странице блога, только с другой сортировкой.
Если совсем идеально — сделать по умолчанию просто полный аналог одной из страниц установленного шаблона (index.php или рубрика например), но с сортировкой по рейтингу. Или по крайней мере сделать так, чтобы можно было скопировать тот же index.php из шаблона в условный ratinglist.php, в этот файл вставить шорткод и как-нибудь сослаться на эту страницу с сайта (то же самое, что со страницами авторов на archive.php).
zusicks438 сказал(а)
А ведь по сути список "лучших за X дней" — это тот же самый список записей, что и на главной странице блога, только с другой сортировкой.
- но опять же: взяв 1000 ВП шаблонов мы увидим что везде представление разное. Вы же говорите как о каком-то внеглассном стандарте.
Вы написали многое - но опять же я вижу "воду". Где макет, дизайн? Как разработчик должен угадать именно ваши желания? А вы первый кому диз не нравится. Этому дизу скоро пару лет уже. Он вроде в 15-й версии появился.
Покажите как хотите, что не устраивает.
Опять же есть сами шаблоны
rating-comment.php - Шаблон рейтинга комментариев
rating-post.php - Шаблон рейтинга записи
- верстайте как вам нужно.
Я лишь предлагаю сделать более удобный доступ к данным, чтобы у каждого была возможность сделать шаблон более информативным. Миниатюра, рубрики, краткая выдержка — всё это приходится вытаскивать самостоятельно, перелопачивая документацию и вставляя функции на свой страх и риск.
Например, сейчас rating-post.php у меня выглядит так: (и здесь у меня начали глючить то ли спойлеры, то ли тег code, так что я не могу толком вставить код).
Я всё же уверен в том, что, какими бы разными ни были шаблоны, большинство из них выводит на страницах с записями и метаданные, и отрывки из статьи, и, всё чаще, миниатюры публикаций. Иметь ко всему этому добру доступ "из коробки" было бы явно не лишним.
rating-post.php
<?php
global $rating;
//print_r($rating);
$id = (int)$rating->object_id;
$author = (int)$rating->object_author;
$total = $rating->rating_total;
?>
<div class="post-column clearfix">
<article id="post-<?php this_id($id); ?>" <?php post_class($id); ?>>
<?php this_post_image($id); ?>
<header class="entry-header">
<?php this_heading($id); ?>
<?php this_entry_meta($id, $author); ?>
</header><!-- .entry-header -->
<div class="entry-content entry-excerpt clearfix">
<p><?php echo get_the_excerpt($id); ?></p>
<?php this_more_link($id); ?>
<div class="rcl-rating-box">
<div class="rating-wrapper">
<?php echo this_rating($total); ?>
</div>
</div>
</div><!-- .entry-content -->
</article>
</div>
core.php (просто выбрал файл, который лучше подходил по смыслу, может и неправильно)
function this_entry_meta($id, $author) {
$postmeta = this_meta_date($id);
$postmeta .= this_meta_author($author);
$postmeta .= this_meta_category($id);
$postmeta .= this_meta_comments($id);
echo '<div class="entry-meta">' . $postmeta . '</div>';
}
function this_meta_date($id) {
$time_string = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date published updated" datetime="%3$s">%4$s</time></a>',
esc_url( get_permalink($id) ),
esc_attr( get_the_time( '', $id) ),
esc_attr( get_the_date( 'c', $id ) ),
esc_html( get_the_date( '', $id ) )
);
return '<span class="meta-date">' . $time_string . '</span>';
}
function this_meta_author($author) {
$author_string = sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>',
esc_url( get_author_posts_url( $author ) ),
esc_attr( sprintf( esc_html__( 'Посмотреть все публикации %s', 'this' ), get_the_author_meta( 'display_name', $author ) ) ),
esc_html( get_the_author_meta( 'display_name', $author ) )
);
return '<span class="meta-author"> ' . $author_string . '</span>';
}
function this_meta_category($id) {
return '<span class="meta-category"> ' . get_the_category_list( ', ', '', $id ) . '</span>';
}
function this_meta_comments($id) {
$num_comments = get_comments_number($id);
if ( $num_comments == 0 ) {
$comments = __('Оставить комментарий');
} elseif ( $num_comments > 1 ) {
$comments = __('Комментарии: ').$num_comments;
} else {
$comments = __('1 комментарий');
}
$return_comments = '<a href="' . get_comments_link($id) .'">'. $comments.'</a>';
return '<span class="meta-comments"> ' . $return_comments . '</span>';
}
function this_heading($id) {
$post_title = esc_html(get_the_title( $id ));
$post_link = esc_url( get_permalink($id) );
echo '<h2 class="entry-title"><a href="' . $post_link . '" rel="bookmark">' . $post_title . '</a></h2>';
}
function this_more_link($id) {
echo '<a href="' . esc_url( get_permalink($id) ) . '" class="more-link">Читать дальше »</a>';
}
function this_rating($total) {
echo '<span class="vote-heart"><i class="fa fa-heartbeat" aria-hidden="true"></i></span><span class="rating-value rating-value-view" title="Рейтинг"><span class="rating-plus">' . $total . '</span>';
}
function this_post_image($id, $size = 'post-thumbnail', $attr = array()) {
if ( has_post_thumbnail( $id ) )
{
$post_link = esc_url( get_permalink($id) );
$thumbnail = get_the_post_thumbnail( $id, $size, $attr );
echo '<a href="' . $post_link . '" rel="bookmark">' . $thumbnail . '</a>';
}
}
function this_id($id) {
echo $id;
}
zusicks438 сказал(а)
Иметь ко всему этому добру доступ "из коробки" было бы явно не лишним.
- для кастомизаций есть
. Вариант "стандартного" я так и не увидел от вас. Как говорится сколько людей столько и мнений - но от вас полезного предложения я так и не увидел.
core.php - это вообще что?
От вас просили ваше виденье в виде скетча или дизайна. Спрограммить под хороший шаблон проблемы нет.
Вы таки очень упёрлись в понятие дизайна и испытываете нездоровую любовь к слову "скетч". Я же с самого первого сообщения говорю исключительно о наборе данных, которые в массиве, используемом в rating-post.php, практически отсутствуют. Это не то чтобы про шаблоны, скетчи и дизайны, просто вы меня не слышите или не хотите услышать.
Что мне выводить в этот распрекрасный шаблон, который я сделаю в rating-post.php? Числовой айди пользователя и заголовок поста?
А core.php — это тот файл, в который я вставил функции для работы с постами, он лежит в папке с аддоном и вроде бы подходит по смыслу.
Миниатюра, рубрики, краткая выдержка — всё это приходится вытаскивать самостоятельно, перелопачивая документацию и вставляя функции на свой страх и риск.
- вам этого не хватает? Но тогда причем тут плагин WP-Recall? Все эти данные можно получить используя api вордпресса. Я не понимаю ваших претензий.
Записи:
stdClass Object ( [object_id] => 1604 [object_author] => 2 [rating_total] => 10 [rating_type] => post [days_value_sum] => +10 )
Комментарии:
stdClass Object ( [object_id] => 96 [object_author] => 1 [rating_total] => 2 [rating_type] => comment [days_value_sum] => +2 )
на основе этих данных можно получить всё. Да и вообще весь сайт построить.
Разве это проблемы плагина - что пользователь не может работать с кодексом? А вы не думаете о тех кому эти данные не нужны - но вы настаиваете чтобы это было по дефолту - в итоге бд дергать лишний раз для тех кому это не нужно (а массив будет содержать эти не нужные полученные впустую данные). Это не рационально такое предложение.
И вы же плюете на реализацию дизайна вывода всего этого, заявляя что я "уперся" - а я вот не представляю как "Миниатюра, рубрики, краткая выдержка" + сам рейтинг - можно уместить в сайдбаре. Я не "уперся" в дизайн - я не вижу как всю массу этого юзер сможет уместить в 180 пиксельный сайдбар.
Функционал шаблонов позволяет выводить как вам нужно, но мало этого - функционал этого сайта позволяет вам поделиться своим решением с другими. И они вам скажут спасибо.
Давайте диалог - в нем рождается истина. Но я всегда буду против выводить десяток сомнительных данных если мне дизайном не покажут что это можно сделать удобно для массы пользователей. Чтобы все это гибко встраивалось как в широкий шаблон, так и в узкий сайдбар. А юзеры - если вы не знаете еще фиг знает куда могут воткнуть шорткод и разочароваться что все криво и нескладно.