AJAX解决方案类似于WP类别在管理区域的功能

时间:2010-11-02 作者:dashaluna

我想在管理区域实现与WP Categories屏幕类似的功能。您可以在其中添加类别,它将立即显示在所有类别的列表中。

我有一个CD自定义帖子类型,我想以与添加WP类别相同的方式向CD添加曲目。这样,在常规CD信息之后,将有一个空的“新曲目信息”窗体,其中插入了曲目信息,点击“添加曲目”后,将在常规CD信息下显示一个曲目,并再次显示一个空的“新曲目信息”窗体,以向CD添加另一个曲目。(希望这有意义)。

此外,如果我可以通过拖放来重新排序跟踪记录,那也太糟糕了。

那是很多我不知道该怎么做的“愿望”。我是一个新手,不幸的是,我自己也不能理解。如果人们能给我指出正确的方向,我会非常感激。。。

我真的很感激任何帮助!

非常感谢,Dasha

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

首先,调用ajax的表单必须将一个操作与ajax挂钩的值一起归档。例如,您的ajax调用是:

add_action(\'wp_ajax_show_all_tracks\', \'show_all_tracks\');
“您的表单操作”字段必须是:

<input type="hidden" name="action" value="show_all_tracks" />
这是开始,为了添加曲目,您需要添加一个函数,将javascript添加到曲目编辑表单中,或者通过更改

function add_post_enctype() {
    echo \'
    <script type="text/javascript">
    jQuery(document).ready(function(){
        jQuery("#post").attr("enctype", "multipart/form-data");
        jQuery("#post").attr("encoding", "multipart/form-data");
    });
    </script>\';
}

function add_post_enctype() {
    echo \'
    <script type="text/javascript">
    jQuery(document).ready(function(){
        jQuery("#post").attr("enctype", "multipart/form-data");
        jQuery("#post").attr("encoding", "multipart/form-data");
        jQuery("#Add Track").click(function() {
            jQuery.ajax({
                type: "post",url: "<?php echo admin_url(\'admin-ajax.php\'); ?>",
                data: { 
                    action: \'add_track\',
                    ad_type: jQuery( \'#tr_name\' ).val() ,
                    ad_type: jQuery( \'#tr_time\' ).val() ,
                    ad_type: jQuery( \'#tr_lyrics\' ).val() ,
                    _ajax_nonce: jQuery( \'#nonce\' ).val() , 
                },
                success: function(html){ //so, if data is retrieved, store it in html
                    if (html.indexOf(\'ok\') > -1 || html.indexOf(\'true\') > -1) {
                        alert(\'track added\');
                    }

                }
            });
            return false;
        });

    });
    </script>\';}
创建ajax do操作挂钩

add_action(\'wp_ajax_add_track\', \'add_track\');
然后函数本身添加曲目:

function add_track(){
check_ajax_referer( "add_track" );
/* save to the custom field array that holds the track data.
and return OK as string  i know you can manage that*/
}
最后一个是更改表单:

<form id="add-track-form" name="add-track-form" action="" method="post">
<input type="hidden" name="mytheme_meta_box_nonce" value="\'<?php wp_create_nonce(basename(__FILE__)) ?>\'" />
<?php foreach($this->_meta_box[\'form\'] as $el){
    $this->display_field($el);
    } ?>
<input type="submit" id="add-track" name="add-track" value="Add Track" />

 <form id="add-track-form" name="add-track-form" action="" method="post">
<input type="hidden" name="nonce" id="nonce" value="<?php echo wp_create_nonce( \'add_track\' ); ?>" />
    <?php foreach($this->_meta_box[\'form\'] as $el){
        $this->display_field($el);
        } ?>
    <input type="submit" id="add-track" name="add-track" value="Add Track" />
</form>
希望这对你有所帮助,它更像是一个草稿,但它应该会让你朝着正确的方向前进。

ohad公司。

SO网友:EAMann

我认为你有一些小部件和自定义帖子有点困惑。这个WP_Widget 类用于构建可在站点主题中使用的可配置多实例小部件。我对这一问题的建议是,使用widget框架作为灵感,创建一个类似(但完全独立)的类,用于在编辑后屏幕上创建多实例元框。我在中详细讨论了功能a related Trac ticket (功能请求)。

阅读完你的问题后,我得出以下结论:

您有一个自定义的CD贴子类型,每张CD可以有多个曲目,您希望能够通过自定义编辑表单一次添加一个曲目(点击“添加曲目”按钮后,曲目信息会自动添加到CD,您可以添加另一个曲目)您希望能够通过AJAX动态添加曲目以不同的顺序拖放曲目虽然乍一看这听起来是一个非常复杂的系统,但实际上并不太复杂。它只是由几个不同的元素组成,其复杂性在于让它们协同工作。

自定义帖子类型首先需要自定义帖子类型:CD。听起来你已经准备好了,很好的开始!

自定义元字段

您还需要为自定义帖子类型创建多个自定义元字段,以保存曲目详细信息。它们可能应采用track\\u X的形式,其中X是曲目编号。首先,您可以手动设置这些选项:track\\u 1、track\\u 2等。

您还需要另一个名为跟踪顺序的自定义元字段。这将是一个定义轨迹显示顺序的数组。例如,如果轨迹顺序为[1,3,2],则将显示track\\u 1,然后显示track\\u 3,然后显示track\\u 2。

这本身就是你所需要的最低限度。如果全部设置好,可以通过定义每个曲目,然后显式设置曲目的顺序来手动添加内容。实际上,我建议您从这里开始,确保您可以让系统以您想要的方式工作,并首先正确显示。将AJAX控件添加到界面和拖放UI完全是一种表象,即它不影响系统后端的工作方式,只影响您与数据的交互方式。

AJAX界面

一旦设置好自定义字段,您将创建一个支持AJAX的元框,以便在帖子中动态添加track\\u X自定义元。这将允许您只向每张CD添加一首曲目或100首曲目,而无需预先定义多首曲目。

然后需要使用jQuery或其他JavaScript库来启用Sortable 曲目列表的界面。这将绑定到AJAX系统,并将动态更新按曲目顺序存储的数据,以便正确显示。

最后两部分(AJAX和jQuery)不是特定于WordPress的,因此我没有详细介绍。因此,要开始学习,请查看为自定义帖子类型添加自定义元字段和自定义元框。这应该足够让你开始了。

结束

相关推荐

WP-ADMIN似乎正在重定向

我的w-admin登录有一个奇怪的问题。这是从我升级到3.0以后才开始的,当我转到wp admin时,登录表单显示正常,但当我输入用户名并通过时,每次都会再次显示登录表单。使用密码恢复功能会导致电子邮件未找到错误。我知道用户名密码和电子邮件是正确的,b/c我可以访问mysql数据库,我可以看到值(至少用户名和电子邮件) 有人知道会出什么问题吗