• My template pages include a form for posting new pages and I would liek to add a small form to post custom fields like they are added in the admin area. I think it is done with the function “add_post_meta” but I can’t figure out how to make a form on a page place the data in the function to then store it in the database. Here is the example they use for this function and related functions.

    <?php
    /*******************
    This function handles the mood and listening_to meta tags.
    It can be called with an action of update, delete, and get (default)
    When called with an action of update, either $mood or $listening_to must be provided.
    i.e. mood_music( $post->ID, 'update', 'Happy', 'Bon Jovi - It's My Life' );
    *******************/
    function mood_music( $post_id, $action = 'get', $mood = 0, $listening_to = 0 ) {
    
      //Let's make a switch to handle the three cases of 'Action'
      switch ($action) {
        case 'update' :
          if( ! $mood && ! $listening_to )
            //If nothing is given to update, end here
            return false;
    
          //add_post_meta usage:
          //add_post_meta( $post_id, $meta_key, $meta_value, $unique = false )
    
          //If the $mood variable is supplied,
          //add a new key named 'mood', containing that value.
          //If the 'mood' key already exists on this post,
          //this command will simply add another one.
          if( $mood ) {
            add_post_meta( $post_id, 'mood', $mood );
            return true;
            }
          //update_post_meta usage:
          //update_post_meta( $post_id, $meta_key, $meta_value )
    
          //If the $listening_to variable is supplied,
          //add a new key named 'listening_to', containing that value.
          //If the 'listening_to' key already exists on this post,
          //this command will update it to the new value
          if( $listening_to ) {
            add_post_meta( $post_id, 'listening_to', $listening_to, true ) or
              update_post_meta( $post_id, 'listening_to', $listening_to );
            return true;
          }
        case 'delete' :
          //delete_post_meta usage:
          //delete_post_meta( $post_id, $meta_key, $prev_value = ' ' )
    
          //This will delete all instances of the following keys from the given post
          delete_post_meta( $post_id, 'mood' );
          delete_post_meta( $post_id, 'listening_to' );
    
          //To only delete 'mood' if it's value is 'sad':
          //delete_post_meta( $post_id, 'mood', 'sad' );
        break;
        case 'get' :
          //get_post_custom usage:
          //get_post_meta( $post_id, $meta_key, $single value = false )
    
          //$stored_moods will be an array containing all values of the meta key 'mood'
          $stored_moods = get_post_meta( $post_id, 'mood' );
          //$stored_listening_to will be the first value of the key 'listening_to'
          $stored_listening_to = get_post_meta( $post_id, 'listening_to', 'true' );
    
          //Now we need a nice ouput format, so that
          //the user can implement it how he/she wants:
          //ie. echo mood_music( $post->ID, 'get' );
    
          $return = '<div class='mood-music'>';
          if ( ! empty( $stored_moods ) )
            $return .= '<strong>Current Mood</strong>: ';
          foreach( $stored_moods as $mood )
            $return .= $mood . ', ';
          $return .= '<br />';
    
          if ( ! empty( $stored_listening_to ) ) {
            $return .= '<strong>Currently Listening To</strong>: ';
            $return .= $stored_listening_to;
            }
          $return .= '</div>';
    
          return $return;
        default :
          return false;
        break;
      } //end switch
    } //end function
    ?>

    Any guidance would be appreciated

  • The topic ‘Include admin options on page’ is closed to new replies.