Gerga

Gerga
Рейтинг
94
Регистрация
02.08.2015
gukkko:
и не работает, я так понял для этого нужно создать новый файлик в шаблоне ВП и прописать путь на него?

Верно, если такого нет. Например шаблон get_template_part('content', 'single'); предназначен для вывода одиночной записи. В archive.php или category.php можете узнать, какой шаблон используется для вывода списка записей в вашей теме.

Gerga:
if (!$tag_id || !is_old_post() || !in_category($category)) {

тут получилась ошибка, вместо "is_old_post" нужно "theme_is_old_post".

gukkko, примерно так.

В functions.php:


/**
* Функция возвращает записи из указанной метки
* если текущая запись является старой и запись входит в указанную категорию
*
* @param int $tag_id - id метки из которой нужно получить записи.
* @param int|array $category - id категорий.
* @return WP_Post[] массив объектов записей.
**/
function theme_get_correct_posts($tag_id = null, $category = null) {
if (!$tag_id || !is_old_post() || !in_category($category)) {
return null;
}

$posts = get_posts(array(
'tag_id' => $tag_id,
));

return $posts;
}

/**
* Функция отвечает на вопрос: Является ли запись старой?
*
* @param int|WP_Post $post id записи или объект записи.
* @return bool истина, если запись опубликована больше 5 дней назад.
**/
function theme_is_old_post($post = null) {
$post = get_post($post);

if (!$post) {
return false;
}

$period = DAY_IN_SECONDS * 5;

$from = get_post_time('U');
$to = current_time('timestamp');

$diff = (int) abs($to - $from);

return $diff > $period;
}

В single.php примерно так:


<?php if ($posts = theme_get_correct_posts(id_метки, id_категории)) : ?>
<div class="list-posts">
<?php
foreach($posts as $post) {
setup_postdata($post);
get_template_part('путь_к_шаблону_вывода_записи');
}

wp_reset_postdata();
?>
</div>
<?php endif; ?>

Вместо "id_метки" вставляете id метки, вместо "id_категории" вставляете id категории, вместо 'путь_к_шаблону_вывода_записи' вставляете путь к шаблону вывода записей в цикле соответственно.

Функция "theme_get_correct_posts" должна вызываться после функции установки записи.

Ogneyar, для удаления записей есть функция wp_delete_post.

Пример реализации вашей задачи:


<?php
include 'wp-load.php';

$posts = get_posts(array(
'posts_per_page' => 999,
));

foreach ($posts as $post) {
$content = strip_tags(strip_shortcodes($post->post_content));

if (500 > mb_strlen($content)) {
wp_delete_post($post->ID, false); // false заменить на true, если нужно удалить в обход корзины.
}
}

можете создать файл "del.php" в корневой директории WordPress, сохранить в этом файле код и вызвать site.ru/del.php в браузере.

Mahol, css:


.vc_toggle .vc_toggle_title {
margin: -12px -10px -18px -20px;
padding: 20px;
background: #2CCCC6;
}

happy-joker, если она не добавлена в библиотеку, сначала нужно добавить туда, а потом уже можно сделать миниатюруй.

Вот небольшая функция, которая может получить src изображения:


function get_the_post_first_image_src($post = null) {
$post = get_post($post);

if (!$post) {
return '';
}

preg_match(
'/src="(.*?)"/',
$post->post_content,
$matches,
PREG_OFFSET_CAPTURE
);

if (isset($matches[1][0]) && $matches[1][0]) {
return $matches[1][0];
}

return '';
}
BoraUp:
сработало! Огромное спасибо!

Пожалуйста.

BoraUp:
ps, я, честно говоря, не знал, что в css можно подобного рода условия прописывать

это еще детский сад :)

BoraUp:
1. Есть категории (рубрики) и подкатегории. Все это выводится в сайдбаре виджитом Рубрики. Как сделать так, чтобы при посещении, допустим, категории_1 раскрывался список ее подкатегорий. При переходе на другую категорию, соответственно, первый закрывался, а текущий открывался?

Если это обычное меню, wp присваивает текущей странице класс .current-menu-item. Он еще присваивает родительскому пункту текущей страницы классы .current-menu-parent и/или .current-menu-ancestor. Зная этом, можно такое сделать:


#sidebar li:not([class*="current-"])>ul {
display: none;
}

sirazov, файл перевода. Плагином Loco Translate можете найти и заменить текст на нужный вам.

Snyder, как вариант:


function tag_aioseop_title($title) {
if (is_tag()) {
$title = 'tag title';
}

return $title;
}
add_filter('aioseop_title', 'tag_aioseop_title');

или title меток находится в произвольных полях:


function tag_aioseop_title($title) {
if (is_tag() && $new_title = get_term_meta(get_queried_object_id(), 'seo_title', 1)) {
$title = $new_title;
}

return $title;
}
add_filter('aioseop_title', 'tag_aioseop_title');


---------- Добавлено 29.06.2019 в 13:00 ----------

Если будете использовать вариант с произвольными полями, можете плагином Advanced Custom Fields добавить произвольное поле "seo_title" для меток.

Dram, два цикла можно избежать, если получить продукты по обвертке, а затем уже в цикле искать название и картинку. Нечто подобное должно получиться:


$products = $pq->find('.product');

foreach ($products as $product) {
if ($title = $product->find('.product-card__title')) {
// тут действия на вывод title
}

if ($img = $product->find('img')) {
// тут действия на вывод src
}
}
Всего: 811