meta_form() – Prints the form in the Custom Fields meta box.

You appear to be a bot. Output may be restricted

Description

Prints the form in the Custom Fields meta box.

Usage

meta_form( $post );

Parameters

$post
( WP_Post ) optional – Optional. The post being edited.

Returns

void

Source

File name: wordpress/wp-admin/includes/template.php
Lines:

1 to 100 of 100
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 );

    $keys = $wpdb->get_col(
      $wpdb->prepare(
        "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",
        $wpdb->esc_like( '_' ) . '%',
        $limit
      )
    );
  }

  if ( $keys ) {
    natcasesort( $keys );
  }
  ?>
<p><strong><?php _e( 'Add New Custom Field:' ); ?></strong></p>
<table id="newmeta">
<thead>
<tr>
<th class="left"><label for="metakeyselect"><?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( '&mdash; Select &mdash;' ); ?></option>
		<?php
    foreach ( $keys as $key ) {
      if ( is_protected_meta( $key, 'post' ) || ! current_user_can( 'add_post_meta', $post->ID, $key ) ) {
        continue;
      }
      echo "\n<option value='" . esc_attr( $key ) . "'>" . esc_html( $key ) . '</option>';
    }
    ?>
</select>
<input class="hidden" type="text" id="metakeyinput" name="metakeyinput" value="" aria-label="<?php _e( 'New custom field name' ); ?>" />
<button type="button" id="newmeta-button" class="button button-small hide-if-no-js" onclick="jQuery('#metakeyinput, #metakeyselect, #enternew, #cancelnew').toggleClass('hidden');jQuery('#metakeyinput, #metakeyselect').filter(':visible').trigger('focus');">
<span id="enternew"><?php _e( 'Enter new' ); ?></span>
<span id="cancelnew" class="hidden"><?php _e( 'Cancel' ); ?></span></button>
<?php } else { ?>
<input type="text" id="metakeyinput" name="metakeyinput" value="" />
<?php } ?>
</td>
<td><textarea id="metavalue" name="metavalue" rows="2" cols="25"></textarea>
	<?php wp_nonce_field( 'add-meta', '_ajax_nonce-add-meta', false ); ?>
</td>
</tr>
</tbody>
</table>
<div class="submit add-custom-field">
	<?php
  submit_button(
    __( 'Add Custom Field' ),
    '',
    'addmeta',
    false,
    array(
      'id'            => 'newmeta-submit',
      'data-wp-lists' => 'add:the-list:newmeta',
    )
  );
  ?>
</div>
	<?php
}
 

 View on GitHub View on Trac