0

$optionPHPスクリプトに渡される変数を取得する必要があります。これ$optionは、「オプション」という名前の非表示フィールドにあります。

基本的に、ユーザーはドラッグ&ドロップなどを使用して再配置できるアイテムをいくつか持っています。アイテムは配列に格納され、アイテムが再配置されると、配列が再配列されて保存されます。

I must get from the hidden fieldに変更get_option($option);しても問題は解決しません。get_option('myoption');$option

Web で例、ソリューション、チュートリアルを検索するのに多くの時間を費やしています。

            array_walk($_POST['order'], 'strip_text_menu_editor');
            $order_array = $_POST['order'];
            $current_menu = get_option($option);    
            $new_order = array();
            foreach($order_array as $order) {
                foreach($current_menu as $key => $value) {
                    if($order == $key) {
                        $new_order[] = $value;
                    }
                }
            }
            update_option($option, $new_order);
            echo '<script type="text/javascript" >
            jQuery(document).ready(function($) {
            var i = 0';
            echo "jQuery('#sortable li').each(function(){
                    var name = 'listItem_' + i;
                    i++;
                });
            });
            </script>";
            die(true);

jQuery

            jQuery(document).ready(function(jQuery) {
                jQuery('#sortable li:odd').addClass('stripe');
                jQuery('#sortable').sortable({
                    handle : '.handle', 
                    update: function(event, ui) {
                        jQuery('#sortable li').removeClass('stripe');
                        jQuery('#sortable li:odd').addClass('stripe');
                        var order = jQuery('#sortable').sortable('toArray');
                        var data = {
                            action: 'menu_editor_special_action',
                            order: order,
                        };
                        jQuery.post(ajaxurl, data, function(response){
                            jQuery('#response').html('Got this from the server: ' + response);
                        });
                    }
                });
            });

HTML

<ul>
<li id="listItem_0" class="">Item A</li>
<li id="listItem_1" class="stripe">Item B</li>
<li id="listItem_2" class="">Item C</li>
<li id="listItem_3" class="stripe">Item D</li>
<li id="listItem_4" class="">Item E</li>
<li id="listItem_5" class="stripe">Item F</li>
</ul>

PHPスクリプトで呼び出されます

function strip_text_menu_editor(&$value, $key) {
        $value = str_replace('listItem_', '', $value);
    }
4

1 に答える 1

3

あなたが投稿した jQuery フラグメントからわかることから、投稿のデータ配列に「オプション」値を追加する必要があります。

var data = {
    action: 'menu_editor_special_action',
    order: order,
    option: $('input[name=option]').val(),  //This part is new
};
jQuery.post(ajaxurl, data, function(response){
    jQuery('#response').html('Got this from the server: ' + response);
});

もちろん、「オプション」に保存したデータの種類はわかりません。また、サーバー側のコードにデータを送信する方法を知るために、get_option() などの関数が何を行っているかもわかりません。理解する必要がありますが、これで始められるはずです。

于 2012-11-14T17:56:31.523 に答える