在WordPress上嵌套可复制的metabox字段可以通过以下步骤实现:
以下是一个示例代码,演示如何在WordPress上嵌套可复制的metabox字段:
// 添加自定义metabox
function custom_metabox() {
add_meta_box('custom_metabox', '可复制的字段', 'render_custom_metabox', 'post', 'normal', 'high');
}
add_action('add_meta_boxes', 'custom_metabox');
// 渲染metabox内容
function render_custom_metabox() {
global $post;
// 获取已保存的字段值
$custom_fields = get_post_meta($post->ID, 'custom_fields', true);
// 如果没有保存的字段值,则初始化一个空数组
if (empty($custom_fields)) {
$custom_fields = array('');
}
// 渲染字段
foreach ($custom_fields as $index => $value) {
?>
<div class="custom-field">
<input type="text" name="custom_fields[]" value="<?php echo esc_attr($value); ?>" />
<?php if ($index > 0) { ?>
<button class="remove-field">删除</button>
<?php } ?>
</div>
<?php
}
?>
<button id="add-field">添加字段</button>
<script>
jQuery(document).ready(function($) {
// 添加字段
$('#add-field').click(function() {
$('.custom-field:last').clone().insertAfter('.custom-field:last');
});
// 删除字段
$(document).on('click', '.remove-field', function() {
$(this).parent('.custom-field').remove();
});
});
</script>
<?php
}
// 保存metabox字段的值
function save_custom_metabox($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (isset($_POST['custom_fields'])) {
$custom_fields = array_map('sanitize_text_field', $_POST['custom_fields']);
update_post_meta($post_id, 'custom_fields', $custom_fields);
}
}
add_action('save_post', 'save_custom_metabox');
这个示例代码创建了一个名为"可复制的字段"的metabox,其中包含一个可复制的文本字段。用户可以点击"添加字段"按钮来复制字段,点击"删除"按钮来删除字段。所有字段的值将在保存文章时被保存到数据库中。
请注意,这只是一个示例代码,你可以根据自己的需求进行修改和扩展。在实际使用中,你可能需要添加字段验证、样式调整和其他自定义功能。
领取专属 10元无门槛券
手把手带您无忧上云