Поддержка Проблемы и решения Кастомные поля и кеширование

  • Создано два кастомных типа контента — product и recomend.
    Первый имеет три десятка кастомных полей + пяток таксономий.
    Во втором сделано кастомное поле с выбором постов из первого. Нечто вроде «похожих записей», коих будет выбираться до сотни для одной записи типа recomend. https://i.imgur.com/WLkLrxn.jpg
    И соответственно выводится в виде карточек с кастомными полями productа. (но не всё три десятка, а около десятка)

    Как мне кажется это должно создавать большую нагрузку на базу и память.

    Подскажите, надо ли и как правильно делать кеширование для таких случаев? Имею ввиду не использование плагинов, а программно, на уровне ВП. Что почитать, в какую сторону смотреть? Желательно на русском.
    Подозреваю, что надо использовать Redis или Memcached, но и в этом случае вопросы те же.

    Читал про объектное и транзитные кеширования в ВП, но мои знания об этом поверхностны и не знаю какое нужно для данного случая.

    Или я ошибаюсь и ВП уже такое сам кеширует и от этого нагрузка не будет существенной?

Просмотр 3 ответов — с 16 по 18 (всего 18)
  • Как минимум для того, чтобы не тратить чужое время на споры и чтение ереси типа

    За ЧУЖОЕ время мне не платят.

    Вы просто любитель. Любитель в ВП, любитель поспорить. Хотя нет. В бесполезных спорах и Вы профессионал. Суперпрофи.

    Спасибо за комплимент.
    К сожалению ни могу ответить вам, хоть чем-то похожим.

    Модератор Yui

    (@fierevere)

    ゆい

    покажу примером

    
    <div class="related-post" >
    <?php 
    $related_ky = 'yui_related_posts_' . $post->ID;
    if ( ! $relhtml = get_transient( $related_ky ) ) {
    $tags = wp_get_post_tags($post->ID);
    ob_start();
    if ($tags) {
       $tag_ids = array();
       foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
       $args=array( 'tag__in' => $tag_ids, 'post__not_in' => array($post->ID),'showposts'=>3, 'caller_get_posts'=>1, 'orderby'        => 'rand');
       $relloop = new wp_query($args);
       if( $relloop->have_posts() ) {
       echo '<div class="related-post-headline" >А еще можно почитать:</div>';
       echo '<ul class="post-list">';
     while ($relloop->have_posts()) {
            $relloop->the_post();
    $thulink = wp_get_attachment_thumb_url( get_post_thumbnail_id(get_the_ID()) );
    if(!empty($thulink)) $thumb = '<img src="'.$thulink.'" />'; else $thumb = '<img src="/img/nothumb.png" />';
    ?>
    <li class="related-post-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Ссылка к: <?php the_title_attribute(); ?>">
    <div class="related-post-thumb"><?php echo $thumb; ?></div>
    <div class="related-post-title"><?php the_title(); ?></div></a></li> <?php  wp_reset_postdata(); }}} ?></ul></div>
    <?php
    $relhtml = ob_get_clean();
    set_transient($related_ky, $relhtml, 14400);
    }
    echo $relhtml;
    ?>
    

    $relhtml в данном случае является уже готовым куском HTML
    кешируется на 14400 секунд для каждой записи с ключом yui_related_posts_9999
    (где 9999 будет примером ID записи)

    покажу примером

    Огромное спасибо. Буду разбираться.

Просмотр 3 ответов — с 16 по 18 (всего 18)