1

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();
});

誰かが何が悪いのか教えてもらえますか?

4

1 に答える 1

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(リビジョンの場合、自動保存を行う場合)、セキュリティチェックなしでより問題がありwp_nonce_fieldます: .

WordPress Answers で多くの良い例を見つけることができます。この検索クエリを確認してください。

于 2013-04-21T00:31:04.677 に答える