Make WordPress Core

Ticket #28672: ticket-28672-samples.php

File ticket-28672-samples.php, 3.4 KB (added by GunGeekATX, 10 years ago)

Sample plugin showing functionality of patch

Line 
1<?php
2/*
3Plugin Name: Ticket 28672 Samples
4Author: Pete Nelson
5Version: 1.0
6*/
7
8if ( !defined( 'ABSPATH' ) ) exit( 'restricted access' );
9
10add_action( 'admin_init', 'ticket_28672_add_settings' );
11
12function ticket_28672_add_settings() {
13
14        global $ticket_28672_admin_notices;
15        $ticket_28672_admin_notices = array();
16
17        // add settings field to a valid built-in section
18        $results = add_settings_field( '_28672_general_default', 'Valid General/Default Field', 'ticket_28672_settings_field', 'general', 'default' );
19
20        if ( is_wp_error( $results ) )
21                $ticket_28672_admin_notices['invalid'][] = $results->get_error_message();
22        else
23                $ticket_28672_admin_notices['valid'][] = 'Valid General/Default field added.';
24
25
26        // add settings field to a non-existent built-in section
27        $results = add_settings_field( '_28672_general_invalid', 'Invalid General Section Field', 'ticket_28672_settings_field', 'general', 'non-existent-section' );
28
29        if ( is_wp_error( $results ) )
30                $ticket_28672_admin_notices['invalid'][] = $results->get_error_message();
31        else
32                $ticket_28672_admin_notices['valid'][] = 'General Invalid Section field added.';
33
34
35        // add a settings section to a built-in page
36        add_settings_section( 'new_section', 'New General Section', 'ticket_28672_settings_section', 'general' );
37
38
39        // add settings field to the new section
40        $results = add_settings_field( '_28672_general_new_section_field', 'Valid General/New Section Field', 'ticket_28672_settings_field', 'general', 'new_section' );
41
42        if ( is_wp_error( $results ) )
43                $ticket_28672_admin_notices['invalid'][] = $results->get_error_message();
44        else
45                $ticket_28672_admin_notices['valid'][] = 'Valid General/New Section field added.';
46
47
48        // add a settings field to a theoretical plugin page
49        $results = add_settings_field( '__28672_plugin_field', 'New Plugin Field', 'ticket_28672_settings_field', 'ticket-28672-page', 'my-plugin-section' );
50
51        if ( is_wp_error( $results ) )
52                $ticket_28672_admin_notices['invalid'][] = $results->get_error_message();
53        else
54                $ticket_28672_admin_notices['valid'][] = 'My Plugin Section/New Plugin Field Added (before section was defined)';
55
56
57        // whoops!  let's add the settings section for the theoretical plugin, then add the field
58        add_settings_section( 'my-plugin-section', 'My Plugin Section', 'ticket_28672_settings_section', 'ticket-28672-page' );
59        $results = add_settings_field( '__28672_plugin_field', 'New Plugin Field', 'ticket_28672_settings_field', 'ticket-28672-page', 'my-plugin-section' );
60
61        if ( is_wp_error( $results ) )
62                $ticket_28672_admin_notices['invalid'][] = $results->get_error_message();
63        else
64                $ticket_28672_admin_notices['valid'][] = 'My Plugin Section/New Plugin Field Added (after section was defined)';
65
66
67
68        // display the results
69        add_action( 'admin_notices', 'ticket_28672_display_admin_notices' );
70
71}
72
73
74function ticket_28672_settings_section( $args ) {
75}
76
77
78function ticket_28672_settings_field() {
79        echo 'Ticket 28672 Input Field Placeholder';
80}
81
82
83function ticket_28672_display_admin_notices( ) {
84
85        global $ticket_28672_admin_notices;
86
87        foreach ( $ticket_28672_admin_notices['valid'] as $message ) {
88?>
89    <div class="updated">
90        <p>Ticket 28672: <?php echo esc_attr( $message ); ?></p>
91    </div>
92<?php
93        }
94
95        foreach ( $ticket_28672_admin_notices['invalid'] as $message ) {
96?>
97    <div class="error">
98        <p>Ticket 28672: <?php echo esc_attr( $message ); ?></p>
99    </div>
100<?php
101        }
102
103}