Prikaz različitog shortcoda svaki vikend

U WP-u trebam svaki tjedan prikazati jedan shortcode, šest različiti za svaki tjedan. Nakon šestog tjedna se opet prikazuje prvi i tako u krug.

Primjer [code id=1].

Ima tko ideju kako to riješiti da se automatski mijenja?

Ideju za neku petlju ili nesto slično

Prikazati di? …

Trenutni ručno mijenjam u editoru, prihvatljivo je i ako bude hardcoded u templateu.

Prikazuje se samo na jednoj stranici ili više stranica?

Samo na jednoj stranici, shortcode generira ssdržaj.

Ok, imam malo vremena pa ti dam primjer za jedno 10 min

<?php 

// u WP nemaš weekly schedule opciju pa je treba dodati
add_filter( 'cron_schedules', function( $schedules ) {

    $schedules['weekly'] = [
        'interval' => 604800, 
        'display'  => __('Weekly')
    ];

    return $schedules;
    
});

if ( ! wp_next_scheduled( 'change_shortcode_action' ) ) {
    wp_schedule_event( time(), 'weekly', 'change_shortcode_action' ); 
}

add_action('change_shortcode_action', 'change_shortcode_every_week');

function change_shortcode_every_week() {

    $id = 5; // post id koji ti treba

    $shortcodes = [
        '[week-1]',
        '[week-2]',
        '[week-3]',
        '[week-4]',
        '[week-5]',
        '[week-6]',
    ];

    $post = get_post( $id ); 

    foreach( $shortcodes as $shortcode ) {

        // provjeri koji se shortcode koristi
        if ( strstr( $post->post_content, $shortcode ) ) {

            $next = next( $shortcodes );

            if ( ! $next ) {

                reset( $shortcodes );

                $next = current( $shortcodes );

            }

            $content = str_replace( $shortcode, $next, $post->post_content );

            $data = [
                'ID'           => $id,
                'post_content' => $content,
            ];
           
            wp_update_post( $data );

        }

    }

}

Nisam probao, valjda će raditi :wink:

1 Like