web-dev-qa-db-ja.com

後で使用するために、ランダムな投稿シーケンスから配列を保存する方法を教えてください。

私は私のフィットネスを助けるためにWordpress上でランダムなトレーニングジェネレータを構築しています、そして後で参照するためにランダムなポスト配列を保存することに行き詰まっています。

説明します。

ジェネレータは2つの主な段階で動作するはずです。

  1. あなたはあなたがあなたがあなたがあなたがトレーニングをどのくらい難しいものにしたいか、そしてどれくらいの時間がかかるべきであるかを選ぶ。

    これらの値は、URL文字列を介して新しいページに渡されます。これは、文字列のパラメータと動的ページのコード( '/ your-workout /')に基づいてランダムな投稿を表示することで、ランダムなワークアウト(質問の最後にあるコード)を作成します。

  2. あなたがトレーニングを好きなら、私はあなたが後で再びそれを使用するためにあなたがこのランダムな投稿の配列を保存できるようにして欲しいです。

    1. このランダムな順序で表示された投稿のIDは配列に保存されます。
    2. ユーザーが後で再び使用するためにワークアウトを保存したい場合は、この特定の順序で順番にコンテンツが入力された新しいWordpress Pageを作成するために、このPost IDの配列が使用されます。これは、ワークアウトを「保存」することによって作成された( '/ your-workout /')の子ページになります。

ステップ2は特に私が行き詰まっているところです。

ランダムな配列のpost IDを保存して、それを使ってこの特定のシーケンスを表示する新しい子ページを作成するにはどうすればいいですか?

ステップ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();?>

私がもっと明確になることができるならば、私に知らせてください。

ありがとうございます。

R :)

4
rbcpt

私の提案は、トレーニングを特定のユーザーのメタデータ内の新しいエントリとして保存することです。

"1回のトレーニングを保存する

ワークアウトがエクササイズID 1, 3, 5, 9で構成されているとします。それではコードは:

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

基本的にはそれだけです。

ただし、ユーザーに複数のワークアウトを保存できるようにしたい場合は、現在のワークアウトを取得してから新しいワークアウトを追加し、最後にデータを更新します。これは次のようになります。

"複数のトレーニングを保存する

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

繰り返しますが、これは基本的な考え方です。

おそらくあなたは、保存したワークアウトにアクセスする手段をユーザに与えたり、編集/削除などをしたいと思うかもしれません.

4
tfrommen