Php 在wordpress中保存表单数据?
我正在添加一个开源的元盒脚本。。。查看源代码 我所做的基本上是在文本框中添加内容作为一个层(每次用户需要一个新层时,文本框都会被克隆),下面是一把小提琴来演示它是如何工作的 创建你在小提琴中看到的功能是容易的,但是保存数据是我的弱点。。。我对使用ajax保存数据有基本的了解,我认为最好使用ajax保存表单数据,然后将其放到数据库中 我的问题(脚本的源代码)我无法在脚本中添加Php 在wordpress中保存表单数据?,php,database,Php,Database,我正在添加一个开源的元盒脚本。。。查看源代码 我所做的基本上是在文本框中添加内容作为一个层(每次用户需要一个新层时,文本框都会被克隆),下面是一把小提琴来演示它是如何工作的 创建你在小提琴中看到的功能是容易的,但是保存数据是我的弱点。。。我对使用ajax保存数据有基本的了解,我认为最好使用ajax保存表单数据,然后将其放到数据库中 我的问题(脚本的源代码)我无法在脚本中添加 这是一个如何保存数据的示例 保存: save : function(el) { // Temporary dis
这是一个如何保存数据的示例
保存:
save : function(el) {
// Temporary disable submit button
jQuery('.publish button').text('Saving ...').addClass('saving').attr('disabled', true);
jQuery('.saving-warning').text('Please do not navigate away from this page while Brash is saving your layers!');
// Iterate over the sublayers
jQuery(this).find('#sub-layers .block').each(function(sublayer) {
// Iterate over the sublayer properties
jQuery(this).find('input, select, textarea').each(function() {
// Save original name attr to element's data
jQuery(this).data('name', jQuery(this).attr('name') );
});
});
// Reset layer counter
Brash.counter = 0;
setTimeout(function() {
// Iterate over the sublayers
jQuery('#sub-layers .block').each(function(sublayer) {
// Data to send
$data = jQuery('.main .moon_metabox').eq(layer).find('input, textarea, select');
$data = $data.add( jQuery('#DONTHAVEFORM_DUETOSCRIPT > input') );
// Post layer
jQuery.ajax(jQuery(el).attr('action'), {
type : 'POST',
data : $data.serialize(),
async : false,
success : function(id) {
Brash.counter += 1;
if(jQuery('.main .moon_metabox').length == Brash.counter) {
// Give feedback
jQuery('.publish button').text('Saved').removeClass('saving').addClass('saved');
jQuery('.saving-warning').text('');
// Re-enable the button
setTimeout(function() {
jQuery('.publish button').text('Save changes').attr('disabled', false).removeClass('saved');
}, 2000);
// Layers
jQuery('.main .moon_metabox').each(function(layer) {
// Sublayers
jQuery(this).find('#sub-layers .block').each(function(sublayer) {
jQuery(this).find('input, select, textarea').each(function() {
jQuery(this).attr('name', jQuery(this).data('name'));
});
});
});
}
}
});
});
}, 500);
},
// Save changes
jQuery('#DONTHAVEFORM_DUETOSCRIPT').submit(function(e) {
e.preventDefault();
Brash.save(this);
});
一旦我让表单标记工作起来,用layman的术语来说,这种方法保存数据的目的就是将信息放入输入字段并用这些值填充数据库表
我见过使用action=”“
的插件,如果我把它放在表单action中,数据会在哪里传输?我如何将它指向数据库表,我希望得到链接和一些简短的信息,可以帮助描绘一个更清晰的画面,这将是超级
重述:对于学习和测试,我只想知道如何获取表单数据,只需2个输入1个文本区域,使用ajax将表单数据放入wordpress数据库,然后重用该数据,这似乎并不复杂,我只是不知道如何在,我需要在保存数据部门上一课
下面是我如何在脚本中实现自定义数据
我创建自己的名为sortable的自定义$field['type']
。中的第40行是此代码的开头
case 'sortable':
echo '<div id="sample" style="display: none;">';
echo '<div class="block" style="margin: 0 auto;">';
echo '<p class="handle"></p>';
echo '<div contenteditable="true" class="cancel" style="margin: 0 auto;">';
echo '<textarea name="', $field['id'], '" id="', $field['id'], '" class="joetest" cols="60" rows="10">', '' !== $meta ? $meta : $field['std'], '</textarea>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '<div id="sub-layers"></div>';
echo '<a class="add">add</a>';
echo '<div class="inner">
<button class="button-primary">Save changes</button>
<p class="saving-warning"></p>
<div class="clear"></div>
</div>';
break;
案例“可排序”:
回声';
回声';
echo';
回声';
回声“”,“”!==$梅塔$元:$field['std'],'';
回声';
回声';
回声';
回声';
附和“添加”;
回声'
保存更改
';
打破
看来你把事情复杂化了一点。要在wordpress中通过ajax保存数据,需要使用ajaxurl
——它是在wp admin中自动定义的
然后需要创建一个函数,该函数将使用指定的操作
捕获数据
因此,在php中,您需要
<?php
add_action('wp_ajax_your_action', 'your_function' );
function your_function(){
//Do your saving here
}
?>
您犯的错误是将表单提交到了错误的URI。好的,谢谢您的回答,我以前编写了一个类似于ajax的函数来将一些变量存储到数据库中,但是我查看了一个插件的源代码,他们做了一些不同的事情,我无法确定他们做了什么,但我会运行这个方法。。。不确定您是否执行了大量wordpress数据库查询,但我是否应该创建一个新表,如果不是,我应该填充哪个表?我还没有检查您保存的所有数据,但看起来您应该创建表。请让我知道这个答案是否回答了您的问题。好的,我一定会插话让您知道,这可能需要一点时间,我现在正在管理一些事情,我感谢您的帮助…我意识到脚本已经将数据发布到数据库的Posteta表中,我正在努力利用这一点。。。我找到了如何将一些值存储到数据库中的方法,但仍在努力实现所有功能。。
// Post layer
jQuery.ajax(ajaxurl + '?action=your_action', {
type : 'POST',
data : $data.serialize(),
async : false,
success : function(id) {
//Do your stuff here
}