meta_form
Prints the form in the Custom Fields meta box.
Description
meta_form( (null) $post = null );
Parameters (1)
- 0. $post — Optional. (null) =>
null
- The post being edited.
Usage
if ( !function_exists( 'meta_form' ) ) { require_once ABSPATH . '/wp-admin/includes/template.php'; } // Optional. The post being edited. $post = null; // NOTICE! Understand what this does before running. $result = meta_form($post);
Defined (1)
The function is defined in the following location(s).
- /wp-admin/includes/template.php
- function meta_form( $post = null ) {
- global $wpdb;
- $post = get_post( $post );
- /**
- * Filters values for the meta key dropdown in the Custom Fields meta box.
- *
- * Returning a non-null value will effectively short-circuit and avoid a
- * potentially expensive query against postmeta.
- *
- * @since 4.4.0
- *
- * @param array|null $keys Pre-defined meta keys to be used in place of a postmeta query. Default null.
- * @param WP_Post $post The current post object.
- */
- $keys = apply_filters( 'postmeta_form_keys', null, $post );
- if ( null === $keys ) {
- /**
- * Filters the number of custom fields to retrieve for the drop-down
- * in the Custom Fields meta box.
- *
- * @since 2.1.0
- *
- * @param int $limit Number of custom fields to retrieve. Default 30.
- */
- $limit = apply_filters( 'postmeta_form_limit', 30 );
- $sql = "SELECT DISTINCT meta_key
- FROM $wpdb->postmeta
- WHERE meta_key NOT BETWEEN '_' AND '_z'
- HAVING meta_key NOT LIKE %s
- ORDER BY meta_key
- LIMIT %d";
- $keys = $wpdb->get_col( $wpdb->prepare( $sql, $wpdb->esc_like( '_' ) . '%', $limit ) );
- }
- if ( $keys ) {
- natcasesort( $keys );
- $meta_key_input_id = 'metakeyselect';
- } else {
- $meta_key_input_id = 'metakeyinput';
- }
- ?>
- <p><strong><?php _e( 'Add New Custom Field:' ) ?></strong></p>
- <table id="newmeta">
- <thead>
- <tr>
- <th class="left"><label for="<?php echo $meta_key_input_id; ?>"><?php _ex( 'Name', 'meta name' ) ?></label></th>
- <th><label for="metavalue"><?php _e( 'Value' ) ?></label></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td id="newmetaleft" class="left">
- <?php if ( $keys ) { ?>
- <select id="metakeyselect" name="metakeyselect">
- <option value="#NONE#"><?php _e( '— Select —' ); ?></option>
- <?php
- foreach ( $keys as $key ) {
- continue;
- }
- ?>
- </select>
- <input class="hide-if-js" type="text" id="metakeyinput" name="metakeyinput" value="" />
- <a href="#postcustomstuff" class="hide-if-no-js" onclick="jQuery('#metakeyinput, #metakeyselect, #enternew, #cancelnew').toggle();return false;">
- <span id="enternew"><?php _e('Enter new'); ?></span>
- <span id="cancelnew" class="hidden"><?php _e('Cancel'); ?></span></a>
- <?php } else { ?>
- <input type="text" id="metakeyinput" name="metakeyinput" value="" />
- <?php } ?>
- </td>
- <td><textarea id="metavalue" name="metavalue" rows="2" cols="25"></textarea></td>
- </tr>
- <tr><td colspan="2">
- <div class="submit">
- <?php submit_button( __( 'Add Custom Field' ), '', 'addmeta', false, array( 'id' => 'newmeta-submit', 'data-wp-lists' => 'add:the-list:newmeta' ) ); ?>
- </div>
- <?php wp_nonce_field( 'add-meta', '_ajax_nonce-add-meta', false ); ?>
- </td></tr>
- </tbody>
- </table>
- <?php
- }