$productId = $post->IDp;
// Кнопка только для товара с id 534 + marketing-materials
if (is_object_in_term($productId, 'product_cat', 'marketing-materials')) :
if ($productId == 534) :
echo '<a>Купить</a>';
endif;
// Кнопка для всех остальных товаров
else :
echo '<a>Купить</a>';
endif;
Как через GET-запрос получить все записи принадлежащие к этому термину?
Согласно документации, запрос должен выглядеть так:
$array = [
'tax_query' => [
[
'taxonomy' => 'some_taxonomy',
'field' => 'slug',
'terms' => 'some_term'
]
]
];
https://site.ru/wp-json/wp/v2/posts?taxonomy=taxonomy_name&term=term_name
сделать небольшой блочный сайт
Сейчас попросили сделать небольшой блочный сайт с готовым дизайном. Я его сверстала.
Как лучше организовать редактирование текстов для конечного пользователя?
global $wpdb;
$data = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}table", ARRAY_A);
file_put_contents($path . '/' . $this->backup_filename . '.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
<?php echo do_shortcode( '[gridmaster grid_style="style-2" post_type="game" posts_per_page="10" orderby="date" order="DESC" content_from="excerpt" excerpt_type="characters" excerpt_length="15" show_read_more="yes" read_more_text="Скачать" grid_image_size="medium" grid_image_width="350" grid_image_height="200" link_thumbnail="no" link_thumbnail_to="post" show_filter="yes" filter_style="default" btn_all="no" taxonomy="category" hide_empty="1" multiple_select="no" toggle_filter_items="no" pagination_type="load_more" infinite_scroll="true" animation="true" heading_font_size=\'{"xs":"16px","sm":"18px","md":"20px","lg":"22px","xl":"24px"}\' grid_col_gap=\'{"xs":"30","sm":"30","md":"30","lg":"30","xl":"30"}\' grid_row_gap=\'{"xs":"30","sm":"30","md":"30","lg":"30","xl":"30"}\' grid_item_per_row=\'{"xs":"1","sm":"2","md":"3","lg":"3","xl":"3"}\' slider_args=\'{"arrows":"1","autoplaySpeed":"3000","infinite":"1","slidesToShow":{"xs":"1","sm":"2","md":"3","lg":"3","xl":"3"},"slidesToScroll":{"xs":"1","sm":"1","md":"1","lg":"1","xl":"1"}}\']' ); ?>
<?php echo do_shortcode( '[gridmaster grid_style="style-2" post_type="game" posts_per_page="10" orderby="date" order="DESC" content_from="excerpt" excerpt_type="characters" excerpt_length="15" show_read_more="yes" read_more_text="Скачать" grid_image_size="medium" grid_image_width="350" grid_image_height="200" link_thumbnail="no" link_thumbnail_to="post" show_filter="yes" filter_style="default" btn_all="no" taxonomy="category" hide_empty="1" multiple_select="no" toggle_filter_items="no" pagination_type="load_more" infinite_scroll="true" animation="true" heading_font_size=\'{"xs":"16px","sm":"18px","md":"20px","lg":"22px","xl":"24px"}\' grid_col_gap=\'{"xs":"30","sm":"30","md":"30","lg":"30","xl":"30"}\' grid_row_gap=\'{"xs":"30","sm":"30","md":"30","lg":"30","xl":"30"}\' grid_item_per_row=\'{"xs":"1","sm":"2","md":"3","lg":"3","xl":"3"}\' slider_args=\'{"arrows":"1","autoplaySpeed":"3000","infinite":"1","slidesToShow":{"xs":"1","sm":"2","md":"3","lg":"3","xl":"3"},"slidesToScroll":{"xs":"1","sm":"1","md":"1","lg":"1","xl":"1"}}\']' ); ?>
Но появилась идея запрашивать не все посты, а в зависимости от нужной категории. Все существующие ~ 2000 постов разделить на категории. Будет ли такая реализация работать быстрее?
Либо есть какие-то другие идеи?
$cache = get_transient('all_posts_cache');
if (!$cache) {
$posts = get_posts([
'numberposts' => -1,
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'post-item',
// Искать по слагу категории
'category_name' => 'category_name',
// Или искать по id категории
// 'cat' => 123,
]);
// Кэширование на 1 час
set_transient('all_posts_cache', $posts, HOUR_IN_SECONDS);
}
else {
$posts = $cache;
}
или будет достаточно только самой папки находящаяся в themes
/wp-content/themes
.Неужели в Вордпрессе нет возможности задать файл-шаблон любому урлу и я должен использовать вариант с index.php?
function test_rewrite_rule(): void {
add_rewrite_rule('^catalog/?$', 'index.php?catalog_page=1', 'top');
}
add_action('init', 'test_rewrite_rule');
function test_query_var($vars) {
$vars[] = 'catalog_page';
return $vars;
}
add_filter('query_vars', 'test_query_var');
function test_include_catalog($template) {
if (get_query_var('catalog_page')) {
$new_template = locate_template(['catalog.php']);
if ('' != $new_template) {
return $new_template;
}
}
return $template;
}
add_filter('template_include', 'test_include_catalog');
<?php
function get_total_population() {
$args = [
// Заменить на свой тип постов
'post_type' => 'city',
'posts_per_page' => -1,
'post_status' => 'publish',
];
$query = new WP_Query($args);
$sum = 0;
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Заменить на свое кастомное поле
$sum = get_post_meta(get_the_ID(), 'city_population', true) ?? 0;
$sum += (int)$sum;
}
wp_reset_postdata();
}
return $sum;
}
// >Нужно вывести общую цифру населения по всем городам)
echo 'Результат: ' . get_total_population();
Всего пока 4 сайта, на разных CMS (Wordpress, Joomla).
1. С чего нужно начинать, чтобы подготовить сайт(ы) к переезду?
2. Что нужно подготовить на новом пустом сервере?
3. Нужен ли для каждого сайта (их четыре) свой виртуальный сервер (VM)?
Или как эти сайты вообще размещать чтобы в случае чего они не упали все вместе?
5. ... какие советы дадите
как создать поле с обычным текстовым редактором
use Carbon_Fields\Container;
Container::make('post_meta', 'Наименование группы полей')
->where('post_type', '=', 'page') // условие, только для страниц
->add_fields([Field::make('rich_text', 'rich_text_field', '');
и потом его вывести в шаблоне?
$fields = apply_filters('fields_name', [], get_the_ID());
echo esc_html($fields['rich_text_field'] ?? '') ?>
use Carbon_Fields\Field;
Field::make('text', $key, $this->meta_labels[$key])
->set_visible_in_rest_api(true);