Como posso salvar uma matriz de uma sequência de posts aleatória para uso posterior?

4

Estou criando um gerador de exercícios aleatórios no Wordpress para ajudar no meu condicionamento físico, e estou empenhado em salvar matrizes aleatórias de postagens para referência futura.

Vou explicar.

O gerador deve funcionar em duas etapas principais:

  1. Você escolhe o quanto quer treinar e quanto tempo deve levar.

    Esses valores são passados para uma nova página por meio de uma string de URL. Isso cria um exercício aleatório (código na parte inferior da questão) exibindo posts aleatórios com base nos parâmetros da string e do código em uma página dinâmica ('/ your-workout /')

  2. Se você gosta do exercício, quero que você consiga salvar esse array aleatório de posts para usá-lo novamente mais tarde.

    1. Os IDs da postagem exibidos nessa sequência aleatória são salvos em uma matriz.
    2. Quando um usuário deseja salvar um treinamento para usá-lo novamente mais tarde, esse conjunto de IDs de postagem é usado para criar uma nova Página do Wordpress, com o conteúdo preenchido por postagens específicas nessa ordem específica. Esta seria uma página infantil de ('/ your-workout /') criada por 'salvar' um treino.

O passo 2 é especificamente onde estou preso.

Como posso salvar os códigos de postagem de uma matriz aleatória e usá-los para criar uma nova página filha que exiba essa sequência específica?

Código relevante para o passo 1:

        <?php global $post;
        if (isset($_GET['dm'])) { //Check DM is set
        $mode = $_GET['dm'];      //Get DM Value - will define CPT's taxonomy
        }
        if (isset($_GET['e'])) {  //Check E is set
        $posts = $_GET['e'];      //Get E value - will define how many posts are shown
        }
        $my_query = new WP_Query( "post_type=bw-exercise&orderby=rand&difficulty-mode=$mode&showposts=$posts");?> //Define query using pre-set and URL String values

        <?php   if ( $my_query->have_posts() ) { 
        while ( $my_query->have_posts() ) { 
               $my_query->the_post();?>
        <div class="workout">
            <div class="workout-reps"><?php echo get_post_meta(get_the_id(), "wpcf-reps", true);?></div>
            <div class="workout-info"><?php the_title('<div class="workout-name">', '</div>');?>
            <div class="workout-desc"><?php the_content();?></div>
            </div>
            <div class="workout-link"><a href="<?php the_permalink();?>" target="_blank"><img src="<?php bloginfo('template_url');?>/custom/images/i.jpg"></a></div>
        </div>
        <?php
               }
           }
        ?>
        <?php   wp_reset_postdata();?>

Se eu puder ser mais claro, por favor me avise.

Obrigado!

R:)

    
por rbcpt 23.03.2013 / 12:40

1 resposta

4

Minha sugestão é armazenar os treinos como uma nova entrada dentro dos metadados do usuário em particular.

»Salvando um único treino

Suponha que o treino consiste nos IDs de exercício 1, 3, 5, 9 . Então o código é:

// this is the current workout
$workout = array(1, 3, 5, 9);

// get the current user
$user = wp_get_current_user();

// update the user's meta data
update_user_meta($user->ID, 'saved_workout', $workout);

Basicamente, é isso.

No entanto, se você quiser que o usuário consiga armazenar mais de um treinamento, talvez queira obter o (s) atual (is), adicionar o novo e, por fim, atualizar os dados. Isso pode se parecer com o seguinte:

»Salvando vários exercícios

// this is the current workout
$workout = array(1, 3, 5, 9);

// get the current user
$user = wp_get_current_user();

// get saved workout(s), ...
$saved_workouts = get_user_meta($user->ID, 'saved_workouts');
if (! $saved_workouts)
    $saved_workouts = array();
// ... add current workout ...
$saved_workouts[] = $workout;
// ... and update the user's meta data
update_user_meta($user->ID, 'saved_workouts', $saved_workouts);

Mais uma vez, esta é apenas a ideia básica.

Talvez você queira dar ao usuário alguns meios para acessar os treinos salvos e, talvez, editar / excluir, etc.

    
por tfrommen 23.03.2013 / 22:10