• Resolved leowebmarketing

    (@leowebmarketing)


    Hello. I am working on a project for my client 
    This listing website uses WordPress, Elementor, Essential Addons for Elementor - Pro
    
    With Essential Addons for Elementor - Pro, similar pages are displayed on pages using post grid (pages have categories), and similar pages are displayed on listing pages using Essential Addons for Elementor - Pro and "Posts Carousel" and "Post Block". The problem is that Posts Carousel, Post Block, Post grid display the same pages, but randomize only their order. I need the Posts Carousel, Post Block, Post grid widgets on Elementor pages to display randomized posts with a similar category as the current post (page or listing). When the page refreshes, this list should change. I came up with a way to double randomize. If I need to display 4 posts in a Post grid on an elementor page, first, 10 pages with the same category as the current page are randomly selected. After that, 4 pages are randomly selected from them. Here is the code for this function random_related_pages() {
    global $post;
    // Get the current page categories
    $current_page_categories = wp_get_post_terms($post->ID, 'category', array("fields" => "ids"));
    
    // Create a query
    $args = array(
    'post_type' => 'page',
    'tax_query' => array(
    array(
    'taxonomy' => 'category',
    'terms' => $current_page_categories,
    ),
    ),
    'posts_per_page' => 10, // first, get 10 random pages
    'orderby' => 'rand',
    );
    $random_pages_query = new WP_Query($args);
    
    $output = '';
    if ($random_pages_query->have_posts()) {
    // Get all 10 pages in an array
    $all_pages = array();
    while ($random_pages_query->have_posts()) {
    $random_pages_query->the_post();
    $all_pages[] = '
    
    ' . get_the_title() . '
    
    ';
    }
    
    // Randomly pick 4 from the array
    $picked_pages = array_rand($all_pages, 4);
    
    // Output the picked pages
    foreach ($picked_pages as $index) {
    $output .= $all_pages[$index];
    }
    } else {
    // No pages found
    }
    wp_reset_postdata();
    
    return $output;
    }
    add_shortcode('random_related_pages', 'random_related_pages');
    but I need it to change the list of posts for the Posts Carousel, Post Block, Post grid from the Essential Addons for Elementor plugin (these widgets already have a certain design). What can I do? How can I set up a real randomization for these blocks?
    

    The page I need help with: [log in to see the link]

Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)

The topic ‘The problem with randomizing posts’ is closed to new replies.