もう3月おしまいですよ。
今年も残り75%ですよ。
さて、今日もカスタムフィールドを使ったネタですが、とあるページに表示してあるカスタムフィールドの情報を次のページヘ遷移して、さらにお問い合わせフォームに向かう必要がありまして。
その時に、どうやって情報を持ち回ったら楽ちんなのかなぁ。と考えた結果、投稿IDだけ持ち回れば非常に楽ちんだったというお話です。
目次
こんな時に使えそう
カスタムフィールドを使った投稿で、そのカスタムフィールドの値を引き継いだまま、別の固定ページなどヘ遷移するときに役立ちます。
固定ページに投稿内容を表示するのではなくて、投稿で使ったカスタムフィールドの値を固定ページでも引き続き使いたい。ということです。
今回の場合は、最終的にお問い合わせフォームへ遷移するんですが、「投稿」→「固定」→「固定(お問い合わせ)」と遷移しました。
値を持ちまわる
ここからはWordPressというよりは、PHPなんですが、単純に値をPOSTして持ち回ります。
例として、カスタムフィールド『持ち回り』を設定して投稿します。
シングルページから固定ページヘ値を持って行くんですが、どうしたら持ち回れるでしょうか?
僕が考えたのはformを使って持ちまわる方法でした。
<form action="uketori.php" method="post"> <input type="hidden" name="kore" value="<?php echo get_post_meta($post->ID, '持ち回り', true);?>"> <button type="submit">次へ進め</button> </form>
こんな感じですね。
ただ、これだと受け取り側のページで
$uketori = $_POST['kore'];
として取得する必要がありますよね。
そしてそれをさらにPOSTなんかする場合、
<form action="saigo.php" method="post"> <input type="hidden" name="mochimawari" value="<?php echo $uketori;?>"> //もしくは直接これでいけるんでしょうか? <input type="hidden" name="mochimawari" value="<?php echo $_POST['mochimawari'];?>"> <button type="submit">最後へ進め</button> </form>
とする必要があって、なんかあんまりスマートじゃない気がするし、めんどくさい。
あっ!投稿ID持っていけばいいんだ!
上みたいなことをやて、初めて気が付きました。
変にカスタムフィールドの値を持ちまわる必要がないんですよね。投稿IDさえあれば。
つまり、シングルページから
<form action="uketori.php" method="post"> <input type="hidden" name="post_id" value="<?php the_ID();?>"> <button type="submit">次へ進め</button> </form>
としておいて、受け取り側で
$post_ID = $_POST['post_id']; <form action="saigo.php" method="post"> <input type="hidden" name="mochimawari" value="<?php echo get_post_meta($post_ID, '持ち回り', true);?>"> <button type="submit">最後へ進め</button> </form>
と、取得すれば楽だったんじゃないかと。
これで固定ページヘ簡単にカスタムフィールドの値を表示することが出来ました。
まとめ
書いてみたものの、これだと値が1つだからあんまり有り難みがわかりませんが、これが10個位あると、後者のほうがよかった。と思ったんですけど、手間変わりませんかね…?
自己満…?
いや、さらにもう1ページ遷移したりする場合は、こっちのほうが楽のはずです。
もっといい方法あるかもしれんけど…。
なにわともあれ、試行錯誤しながら方法を模索していくのは楽しいですね。
月末でほんとはそんな余裕ないんですけどね…
そいぎ~。