我正在构建我的第一个Wordpress插件,并且在实现我想要的功能方面遇到了一些麻烦。
基本上我尝试做的是将动态数组保存到options.php
我会尝试更深入地解释功能。基本上,用户将从所有可用post_types的下拉列表中选择post_type
,包括自定义帖子类型。使用jQuery,我在该下拉列表中检测状态更改,然后发布到插件中的函数,该函数将输出与所选post_type关联的所有可用field_types
作为标签和复选框。
https://www.dropbox.com/s/zacpvq85c5u9lrq/Screen%20Shot%202015-12-21%20at%2012.01.12.png?dl=0
https://www.dropbox.com/s/txyigfe81k0wd1i/Screen%20Shot%202015-12-21%20at%2012.01.23.png?dl=0
我可以确定检查了哪些复选框并创建了它们的javascript数组,如何获取此数组,然后将其保存为预先配置的setting_field
?
到目前为止我得到了什么。
我输出所有当前的post_types作为选择输入的一部分。
<select name="comparison_pt" id="comparison_pt" value="<?php echo get_option('comparison_pt'); ?>" value="<?php echo get_option('comparison_pt'); ?>">
<?php
$types = get_post_types(array());
$fields = get_fields();
foreach($types as $type) { ?>
<option value='<?php echo $type; ?>'><?php echo $type; ?></option>
<?php } ?>
</select>
根据上述下拉菜单中的所选选项
$('#settings_post_type').change(function() {
var selected_post_type = $('#settings_post_type option:selected').text();
$.ajax({
url: plugin_object.admin_url,
type: 'POST',
data: {
action: 'get_settings_field_values',
type: selected_post_type
},
success: function(response) {
console.log('AJAX POST => SUCCESS');
$('#settings_field_types').text('');
$('#settings_field_types').append(response);
},
error: function(response) {
console.log('AJAX POST => ERROR');
console.log(response);
}
});
});
我使用选定的值作为WP_Query post_type参数,只返回1个帖子并使用它来确定该帖子的可用field_types。
这会输出许多标签和复选框,如所提供的图像中所示,当它们被点击时,我有一个功能来检测哪些复选框被检查,然后将它们推入一个数组,例如var selected = ['population', 'growth_pa'];
我想将这个数组保存在wordpress中,作为已经预定义的settings_field。
add_settings_field("comparison_ft", "Comparison Field Types", "display_fields_form_element", "plugin-options", "options_section");