質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

730閲覧

wordpress で form からデータを POST し、そのデータを使ってサイドメニューの表示・非表示を継続的に維持させたい

Hiro2good

総合スコア10

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/03/04 04:01

編集2019/03/04 04:03

前提・実現したいこと

はじめまして、純粋なエンジニアではなく、部門的には門外漢なのですが、訳あって Wordpress を使って、以下のことを実現しようとしています。

・最初に希望する内容をいくつか form の checkbox で選択
・POST データを TOP ページで取得
・取得した値を元にして、メニューの一覧から表示したい項目だけを表示
・その状態を以て他のページにも遷移させたいので、 hidden で毎回データを POST する?←ここはいい方法が見つからない

現実として、まず wordpress 内で POST データの取得ができていません。(これができないので次に進めず…)
ショートコードを作成して javascript で取れるかなと考えて実装してみているのですが、まったく掴めずな状態です。

どういう形がベターなのか手探り状態なので、あくまで上記は自分の知識としてこれならできるかも…と思っている次第です。
質問としては雑なものになり大変恐縮なのですが、何かいい方法などあれば、是非ご助力願いたく存じます。

該当のソースコード

javascript

1/* POST データの取得 */ 2var level = postArray['level']; 3var item = postArray['item']; 4var preparation = postArray['preparation']; 5var useful = postArray['useful']; 6var os = postArray['os']; 7 8/* メニューから必要のない項目を削除(各メニューの class に属性は付与) */ 9var os = document.getElementsByClassName('class'); 10for (var i = 0; i < os.length; i++) { 11 os[i].style.display = "none";

php

1function form_post() { 2 if(isset($_POST)){ 3 $postArray = json_encode($_POST, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); 4 echo '<script>var postArray = '. $postArray .';</script>'; 5 } 6} 7add_shortcode('sc_form_post', 'form_post');

試したこと(試したいこと)

form からデータを POST
POST データを TOP ページで取得(取得できていない)
そのデータを配列になおして、メニューのディスプレイの一部を none にする(試せていない、もしかしたらできないかも)
そのデータを保持したまま、別のページへも遷移させる(これも実現できるか不明)

補足情報(FW/ツールのバージョンなど)

local by Flyweel を使って、ローカル上で wordpress を試しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

全てのページ移動をPOSTにするのは無理があるので、PHPを介さずに localStorage に保存して利用するようにしてはいかがでしょう。

【Window.localStorage - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Window/localStorage

【WebStorage API(LocalStorage)を使ってみた - Qiita】
https://qiita.com/masamitsu-konya/items/c69515604570150d3ab9

【ブラウザにデータを保存するlocalStorage(ローカルストレージ)の使い方 | 株式会社グランフェアズ】
https://www.granfairs.com/blog/staff

投稿2019/03/09 17:44

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

あまりテクニックを使わず分かりやすく実装する方法です。

form からデータを POST

普通にformタグを記述する。

POST データを TOP ページで取得(取得できていない)

標準テーマであればindex.phpです。$_POST変数をチェックしてください。
TOPページ以外でもindex.phpを参照するケースもあるので必要であればTOPページ判定もしてください。

そのデータを配列になおして、メニューのディスプレイの一部を none にする(試せていない、もしかしたらできないかも)

上記のpost変数から必要な値を取得して連想配列にして非表示にしたい箇所をif文で条件分岐します。

そのデータを保持したまま、別のページへも遷移させる(これも実現できるか不明)

ログインユーザ単位に設定を変更するのであればuser_metaテーブルにパラメータ的に保存して必要時に取り出す。

投稿2019/03/04 06:45

tabuu

総合スコア2449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問