• Hi,

    I have a custom post called ‘Recipes’ with ‘menu_number’ meta. I can change this meta from custom post page perfectly:

    add_action('save_post', 'recipes_save_extras');
    function recipes_save_extras(){
        global $post;
        [...]
        update_post_meta($post->ID, "menu_number", $_POST["calorias"];
    }

    And I want to update this meta from a admin menu page where I show all recipes and I want to assign one value. The code is something like this but I dont know how to implement:

    <?php
    add_action('admin_menu', 'myrecetas_create_menu');
    
    function myrecetas_create_menu() {
    	//create new submenu
    	add_submenu_page( 'edit.php?post_type=myrecetas', 'myrecetas Theme Options', 'myrecetas Options', 'administrator', __FILE__, 'myrecetas_settings_page');
    	add_action( 'admin_init', 'myrecetas_register_settings' );
    }
    function myrecetas_register_settings() {
    	register_setting( 'myrecetas-settings-group', 'myrecetas_menu_number' );
    }
    function myrecetas_settings_page() {
    ?>
    <div class="wrap">
    <h2>myrecetas Theme Settings</h2>
    <form id="landingOptions" method="post" action="????">
        <?php settings_fields( 'myrecetas-settings-group' ); ?>
        <table class="form-table">
    
            <tr valign="top">
            <th scope="row">Primero:</th>
            <td>
              <select name="myrecetas_id">
                <?php
                global $post;
                $args = array( 'post_type' => 'myrecetas','myrecetas-menu'=>'primero','posts_per_page' => -1 , 'orderby' => 'date');
                $lastposts = get_posts( $args );
                $i=0;
                foreach ( $lastposts as $post ) :
                  setup_postdata( $post );
                  echo "<option value='".$post->ID."'>".get_the_title()."</option>";
                endforeach;
                wp_reset_postdata(); ?>
             </select>
            </td>
            </tr>
            <tr valign="top">
            <th scope="row">Number:</th>
            <td>
           		<input type="text" name="myrecetas_menu_number" value="<?php print get_option('myrecetas_menu_number'); ?>" />
           	</td>
           	</tr>
        </table>
        <p class="submit">
        <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
        </p>
    </form>
    </div>
    <?php } 
    
    add_action('save_post', 'update_myrecetas_post_meta'); 
    
    function update_myrecetas_post_meta(????){
        $id=$_POST["myrecetas_id"];
    
         update_post_meta($id, "menu_number", get_option('myrecetas_menu_number'));
    }  
    
    ?>
  • The topic ‘Update custom post meta from add_menu_page’ is closed to new replies.