サポート » プラグイン » MW WP Form のセレクトボックスの連動

  • 解決済 Honda

    (@rocketmartue)


    MW WP Formで、カスタム投稿タイプ「product」に設定しているカスタムフィールド「esProduct」「esPrice」それぞれの値をフィルターフック「mwform_choices_mw-wp-form-xxx」を使って
    セレクトボックスの選択肢に設定しています。

    function add_products( $children, $atts ) {
        if ( $atts['name'] == 'products' ) {
            $products = get_posts( array(
                'post_type' => 'product',
                'posts_per_page' => -1
            ) );
            foreach ( $products as $product ) {
                $children[$product->esProduct] = $product->esProduct;
            }
        }
        return $children;
    }
    add_filter( 'mwform_choices_mw-wp-form-444', 'add_products', 10, 2 );
    
    function add_price( $children, $atts ) {
        if ( $atts['name'] == 'prices' ) {
            $prices = get_posts( array(
                'post_type' => 'product',
                'posts_per_page' => -1
            ) );
            foreach ( $prices as $price ) {
                $children[$price->esPrice] = $price->esPrice;
            }
        }
        return $children;
    }
    add_filter( 'mwform_choices_mw-wp-form-444', 'add_price', 10, 2 );

    「esProduct」で選択した値に応じて「esPrice」の値が選択されるというように、この2つのセレクトボックスを連動させるようなことはできるのでしょうか?
    「esPrice」の方は、連動した値が表示できれば良いので、セレクトボックスにしなくても良い気もしますが、何か良い方法はないでしょうか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • ちょうど同時期に同様の質問をしていたのですが、解決したのでご参考になるでしょうか。
    https://ja.forums.wordpress.org/topic/158198?replies=3

    私は、セレクトボックス間の連動を JavaScript で行いました。
    PHP ではなく、以下の流れを JS でやるとうまくいくでしょうか。

    1. 「esProduct」のセレクトボックスの変更を検知
    2. 選択された「esProduct」の値を取得
    3. 「esPrice」の選択肢のうち、条件に該当するものを選択状態にさせる
    トピック投稿者 Honda

    (@rocketmartue)

    nujawak様
    貴重な情報ありがとうございます。
    MW WP Formの機能で完結できればと思っていましたが
    確かにJavaScript 使えばできそうですね。

    トピック投稿者 Honda

    (@rocketmartue)

    その後、試行錯誤して自己解決しましたのでコードをあげておきます。
    結果的には、セレクトボックスの連動ではなく、1つのセレクトボックスに「esProduct」と
    「esPrice」両方の値を表示させるようにしました。

    function add_products1( $children, $atts ) {
        if ( $atts['name'] == 'products' ) {
            $products = get_posts( array(
                'post_type' => 'shidashi',
                'posts_per_page' => -1
            ) );
            foreach ( $products as $product ) {
                $selected = $product->esProduct;
                $value =  $product->esPrice;
                $children[$selected] = $selected. " " . $value ."円 ";
            }
        }
        return $children;
    }
    add_filter( 'mwform_choices_mw-wp-form-444', 'add_products1', 10, 2 );
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「MW WP Form のセレクトボックスの連動」には新たに返信することはできません。