Wordpress自定义元框数组
我试图在Wordpress中创建一个自定义元框,用于存储文章的附加链接。因为我不知道最后会有多少链接,所以我创建了一个按钮,用于向元框添加字段 新字段用javascript呈现,存储字段用php呈现。这是不是因为它可以干,但我没有找到另一种方法,它应该工作 代码运行时不会引发错误,但数组未正确保存<代码>打印(当前的附加链接)代码>此时只打印“数组”。还有一个问题困扰着我:Wordpress自定义元框数组,wordpress,custom-post-type,meta-boxes,Wordpress,Custom Post Type,Meta Boxes,我试图在Wordpress中创建一个自定义元框,用于存储文章的附加链接。因为我不知道最后会有多少链接,所以我创建了一个按钮,用于向元框添加字段 新字段用javascript呈现,存储字段用php呈现。这是不是因为它可以干,但我没有找到另一种方法,它应该工作 代码运行时不会引发错误,但数组未正确保存打印(当前的附加链接)此时只打印“数组”。还有一个问题困扰着我:data count=”“是“1”,即使帖子还没有保存。非常感谢您的帮助!这就是我取得的成绩: /** * Add meta box
data count=”“
是“1”,即使帖子还没有保存。非常感谢您的帮助!这就是我取得的成绩:
/**
* Add meta box to
* svl_editions post type for additional links
* @param post $post The post object
* @link https://codex.wordpress.org/Plugin_API/Action_Reference/add_meta_boxes
*/
function svl_add_meta_box_additional_links($post) {
add_meta_box(
'svl_meta_box_additional_links',
__('Additional Links', 'stilvorlagen-functions'),
'svl_render_meta_box_additional_links',
'svl_referents',
'side',
'low'
);
}
add_action('add_meta_boxes_svl_referents', 'svl_add_meta_box_additional_links');
/**
* Render part of custom field meta box for
* svl_editions post type for additional links
* look in scripts/svl-admin-additional-links.php for the rest
* @param post $post The post object
*/
function svl_render_meta_box_additional_links($post) {
wp_nonce_field(plugin_basename(__FILE__), 'svl_meta_box_additional_links_nonce');
$current_svl_additional_links = get_post_meta($post->ID, '_svl_additional_links', true);
print_r($current_svl_additional_links);
?>
<div class="EntriesContainer" data-count="<?php echo count($current_svl_additional_links); ?>" id="itemsList">
<?php
$i = 0;
if (count($current_svl_additional_links) > 0) {
foreach((array)$current_svl_additional_links as $current_svl_additional_link) {
if (isset($current_svl_additional_link['link_name']) || isset($current_svl_additional_link['link_url'])) {
?>
<div class="svl-additional-link-item">
<p><strong><?php echo $i; ?>. Link </strong><span class="remove"> (Entfernen)</span></p>
<label for="svl_additional_links[<?php echo $i ?>][link_name]"><?php _e('Link-Name', 'stilvorlagen-functions') ?></label>
<input type="text" id="svl_additional_links[<?php echo $i ?>][link_name]" name="svl_additional_links[<?php echo $i ?>][link_name]" value="<?php echo esc_attr($current_svl_additional_link['link_name']) ?>" size="15" />
<label for="svl_additional_links[<?php echo $i ?>][link_url]"><?php _e('Link-URL', 'stilvorlagen-functions') ?></label>
<input type="text" id="svl_additional_links[<?php echo $i ?>][link_url]" name="svl_additional_links[<?php echo $i ?>][link_url]" value="<?php echo esc_attr($current_svl_additional_link['link_url']) ?>" size="15" />
<br/>
</div>
<?php
++$i;
}
}
} ?>
</div>
<div class=add-additional-link-action>
<button type="button" class="button" id="addNewItem">Add New Link</button>
</div><?php
}
/**
* Store custom field meta box data
* @param int $post_id The post ID.
* @link https://codex.wordpress.org/Plugin_API/Action_Reference/save_post
*/
function svl_save_meta_box_additional_links($post_id) {
// verify taxonomies meta box nonce
if (!is_valid_user_input(array('svl_meta_box_additional_links_nonce'), $post_id)) {
return;
}
// Make sure that everything is set.
if (! isset($_POST['svl_additional_links'])) {
SVLMessagePipeline::push_error('Input fields missing.');
delete_post_meta($post_id, 'svl_additional_links');
return;
}
// store custom fields values
$additional_links = sanitize_text_field($_POST['svl_additional_links']);
update_post_meta($post_id, '_svl_additional_links', $additional_links);
}
add_action('save_post_svl_referents', 'svl_save_meta_box_additional_links');
/**
*将元框添加到
*附加链接的svl_版本发布类型
*@param post$post发布post对象
*@linkhttps://codex.wordpress.org/Plugin_API/Action_Reference/add_meta_boxes
*/
函数svl\u添加\u元\u框\u附加\u链接($post){
添加元框(
“svl_meta_box_附加链接”,
__(“附加链接”、“stilvorlagen函数”),
“svl_渲染_元_框_附加链接”,
“svl_参照物”,
"一边",,
“低”
);
}
add_action(“add_meta_box_svl_referents”,“svl_add_meta_box_additional_links”);
/**
*渲染的自定义字段元框的一部分
*附加链接的svl_版本发布类型
*其余内容请查看scripts/svl-admin-additional-links.php
*@param post$post发布post对象
*/
函数svl_渲染_元_框_附加链接($post){
wp_nonce_字段(plugin_basename(uuu FILE_uuuu),“svl_meta_box_additional_links_nonce”);
$current_svl_additional_links=get_post_meta($post->ID,'u svl_additional_links',true);
打印(当前的附加链接);
?>
/**
* Render part of the custom field meta box for
* svl_editions post type for additional links
* look in svl-post-meta.php for the rest
* @param post $post The post object
*/
(function($) {
// Namespace-object to keep global scope clean:
var add_additional_link = (function () {
"use strict";
var pub = {}, // Stands for public, gets returned
timer, addNewItemButton, totalItems
pub.init = function () {
addNewItemButton = $("#addNewItem");
$(addNewItemButton).on('click', pub.addNewItem);
totalItems = parseInt($('#itemsList').attr('data-count'));
};
$(".remove").live('click', function() {
$(this).parent().parent().remove();
});
$(document).ready( function () {
pub.init();
});
pub.addNewItem = function(e) {
e.preventDefault();
++totalItems;
var $newItem =
'<div class="svl-additional-link-item">' +
'<p><strong>' + totalItems + '. Link</strong><span class="remove"> (Entfernen)</span></p>' +
'<label for="svl_additional_links[' + totalItems + '][link_name]">Link-Name</label>' +
'<input type="text" id="svl_additional_links[' + totalItems + '][link_name]" name="svl_additional_links[' + totalItems + '][link_name]" value="" size="15" />' +
'<label for="svl_additional_links[' + totalItems + '][link_url]">Link-URL</label>' +
'<input type="text" id="svl_additional_links[' + totalItems + '][link_url]" name="svl_additional_links[' + totalItems + '][link_url]" value="" size="15" />' +
'<br/>'
'</div>';
$('#itemsList').append($newItem);
};
return pub;
}());
}(jQuery))