¿Cómo puedo guardar una matriz de una secuencia de publicación aleatoria para su uso posterior?

4

Estoy creando un generador de ejercicios al azar en Wordpress para ayudarme con mi estado físico, y estoy atascado en guardar matrices de publicaciones aleatorias para futuras referencias.

Lo explicaré.

El generador debería funcionar en dos etapas principales:

  1. Eliges lo difícil que quieres que sea el entrenamiento y cuánto tiempo debe durar.

    Estos valores se pasan a una nueva página a través de una cadena de URL. Esto crea un entrenamiento aleatorio (código en la parte inferior de la pregunta) al mostrar publicaciones aleatorias basadas en los parámetros de la cadena y el código en una página dinámica ('/ your-workout /')

  2. Si te gusta el entrenamiento, quiero que puedas guardar este conjunto aleatorio de publicaciones para usarlo más tarde.

    1. Los ID de la publicación mostrada en esta secuencia aleatoria se guardan en una matriz.
    2. Cuando un usuario desea guardar un entrenamiento para usarlo más tarde, esta matriz de ID de Publicaciones se usa para crear una nueva Página de Wordpress, con el contenido completado por esas publicaciones específicas en ese orden específico. Esta sería una página secundaria de ('/ your-workout /') creada al 'guardar' un entrenamiento.

El paso 2 es específicamente donde estoy atascado.

¿Cómo puedo guardar las ID de publicación de una matriz aleatoria y usarlas para crear una nueva página secundaria que muestre esta secuencia específica?

Código relevante para el Paso 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();?>

Si puedo ser más claro, hágamelo saber.

Gracias!

R :)

    
pregunta rbcpt 23.03.2013 - 12:40

1 respuesta

4

Mi sugerencia es almacenar los entrenamientos como una nueva entrada dentro de los metadatos del usuario en particular.

»Guardando un solo entrenamiento

Supongamos que el entrenamiento consiste en los ID de ejercicio 1, 3, 5, 9 . Entonces el código es:

// 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);

Básicamente, eso es todo.

Sin embargo, si desea que el usuario pueda almacenar más de un entrenamiento, es posible que desee obtener el (los) actual (es), luego agregar el nuevo y finalmente actualizar los datos. Esto podría parecerse a lo siguiente:

»Guardando entrenamientos múltiples

// 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);

Una vez más, esta es solo la idea básica.

Tal vez desee darle al usuario algunos medios para acceder a los entrenamientos guardados, y tal vez editar / eliminar, etc.

    
respondido por el tfrommen 23.03.2013 - 22:10

Lea otras preguntas en las etiquetas