WordPress.org

Make WordPress Core

Ticket #10556: checked-test.php

File checked-test.php, 3.4 KB (added by sudar, 5 years ago)

Sample Plugin to demonstrate checked array function

Line 
1<?php
2/*
3Plugin Name: Checked Test
4Plugin Script: checked-test.php
5Plugin URI: http://sudarmuthu.com/wordpress/
6Description: To demonstrate the use of arrays in checked function
7Version: 0.1
8Author: Sudar
9Author URI: http://sudarmuthu.com/
10*/
11
12/**
13 * Checked Test Author Plugin Class
14 */
15class CheckedTest {
16
17    /**
18     * Initalize the plugin by registering the hooks
19     */
20    function __construct() {
21
22        // Load localization domain
23        load_plugin_textdomain( 'checked-test', false, dirname(plugin_basename(__FILE__)) . '/languages' );
24
25        // Register hooks
26        /* Use the admin_menu action to define the custom boxes */
27        add_action('admin_menu', array(&$this, 'add_custom_box'));
28
29        /* Use the save_post action to do something with the data entered */
30        add_action('save_post', array(&$this, 'save_postdata'));
31    }
32
33    /**
34     * Adds the custom section in the Post and Page edit screens
35     */
36    function add_custom_box() {
37
38        add_meta_box( 'checked_test', __( 'Checked Test Fields', 'checked-test' ),
39                    array(&$this, 'add_some_fields'), 'post', 'advanced' );
40
41    }
42
43    /**
44     * Prints the inner fields for the custom post/page section
45     */
46    function add_some_fields() {
47        global $post;
48        $post_id = $post->ID;
49
50        if ($post_id > 0) {
51            $selected_pages = get_post_meta($post->ID, 'selected_pages');
52            $selected_pages = $selected_pages[0];
53        }
54        // Use nonce for verification
55?>
56        <input type="hidden" name="checked_test_noncename" id="checked_test_noncename" value="<?php echo wp_create_nonce( plugin_basename(__FILE__) );?>" />
57        <label class="selectit"><?php _e('Selected Pages');?> </label><br />
58<?php
59        $pages = get_pages("parent=0");
60        foreach ($pages as $page) {
61?>
62            <label>
63                <input type="checkbox" name="selected_pages[]" value ="<?php echo $page->ID; ?>" <?php checked_array($page->ID, $selected_pages); ?> /><?php echo $page->post_title; ?>
64            </label>
65        <br />
66<?php
67        }
68    }
69
70    /**
71     * When the post is saved, saves our custom data
72     * @param string $post_id
73     * @return string return post id if nothing is saved
74     */
75    function save_postdata( $post_id ) {
76
77        // verify this came from the our screen and with proper authorization,
78        // because save_post can be triggered at other times
79
80        if ( !wp_verify_nonce( $_POST['checked_test_noncename'], plugin_basename(__FILE__) )) {
81            return $post_id;
82        }
83
84        // OK, we're authenticated: we need to find and save the data
85
86        if (isset($_POST['selected_pages'])) {
87            update_post_meta($post_id, 'selected_pages', $_POST['selected_pages']);
88        }
89    }
90
91    // PHP4 compatibility
92    function CheckedTest() {
93        $this->__construct();
94    }
95}
96
97// Start this plugin once all other plugins are fully loaded
98add_action( 'init', 'CheckedTest' ); function CheckedTest() { global $CheckedTest; $CheckedTest = new CheckedTest(); }
99
100// similar to checked() but checks for array
101if (!function_exists('checked_array')) {
102    function checked_array($checked, $current) {
103        if (is_array($current)) {
104            if (in_array($checked, $current)) {
105                echo ' checked="checked"';
106            }
107        } else {
108            if ($checked == $current) {
109                echo ' checked="checked"';
110            }
111        }
112    }
113}
114
115?>