我正在尝试学习有关WordPress插件开发的一些知识。这是我第一次尝试写点东西。这应该在“页面”页面上创建一个输入字段来存储自定义值。
这是我编写的代码,但有些东西不起作用。我无法保存我的数据。
<?php
/*
Plugin Name: nw_Page_Gallery
*/
class nw_Page_Gallery {
public function __construct(){
$this->add_meta_boxes();
}
public function add_meta_boxes(){
add_action("add_meta_boxes", array($this, "add_meta_box_images"));
}
public function add_meta_box_images(){
add_meta_box("nw_page_image", "Sfondo pagina", array($this, "add_image_box"), "page");
}
public function add_image_box($post){
$back_url = get_post_meta($post->ID, 'nw_page_image', true);
echo "Il valore è".$back_url;
?>
<label>Lenght:</label>
<input type="text" class="widefat" name="nw_page_image" id="nw_page_image" value="<?php echo $back_url; ?>" />
<?php
add_action("save_post", function($id){
if(isset($_POST['nw_page_image'])){
update_post_meta(
$id,
'nw_page_image',
strip_tags($_POST['nw_page_image'])
);
}
});
}
}
add_action("admin_init", function(){
$PG = new nw_Page_Gallery();
});
有人能告诉我出了什么问题吗?
答案 0 :(得分:3)
你在最后一个地方做add_action("save_post",
......
属于__construct
,或者你正在做的事情:
public function add_meta_boxes(){
add_action("add_meta_boxes", array($this, "add_meta_box_images"));
add_action("save_post", function($id){
if(isset($_POST['nw_page_image'])){
update_post_meta(
$id,
'nw_page_image',
strip_tags($_POST['nw_page_image'])
);
}
});
}
请注意,在没有安全检查的情况下,您在没有检查一堆内容(如果是修订版,如果进行自动保存)和更有问题的情况下挂钩save_post
:{{3} }。
你可以在WordPress Answers找到很多很好的例子,查看wp_nonce_field
。