Go Back   CodingForums.com > :: Server side development > PHP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 04-19-2012, 07:48 PM   PM User | #1
AnimalD
New to the CF scene

 
Join Date: Apr 2012
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
AnimalD is an unknown quantity at this point
Unhappy Wordpress Meta Boxes issue

Hi, I have a group of Meta Boxes appearing on the home page of a site, and a group of other boxes appearing on the other pages. All update individually, but when the meta fields on the other pages are updated, the meta boxes on the home page are wiped clean. I have split the code into separate functions but have had no luck.

The trouble seems to be the fact that the boxes are updated through the $page_id, could this be including the home page and returning the values as empty as they are empty, and non-existent?

Here is the code:

PHP Code:
add_action("admin_init", "admin_init");
add_action("admin_init", "admin_init");
add_action("save_post", "save_events");
add_action("save_post", "save_home");
$home_id = 5;

function admin_init(){
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
    if ($post_id == '5'){
        add_meta_box("contact-details", "Contact Details", "home_options", "page", "side", "default");
    }else{
        add_meta_box("page-details", "Page Details", "meta_options", "post", "side", "default");
        add_meta_box("page-details", "Page Details", "meta_options", "page", "side", "default");
    }
}

function home_options(){
    global $post;
    $home_id = 5;
    $home = get_post_custom($home_id);
    $address1 = $home['address1'][0];
    $address2 = $home['address2'][0];
    $address3 = $home['address3'][0];
    $post_code = $home['post_code'][0];
    $phone = $home['phone'][0];
    $phone_int = $home['phone_int'][0];
    $fax = $home['fax'][0];
    $fax_int = $home['fax_int'][0];
    $email = $home['email'][0];
    $opening_times = $home['opening_times'][0];
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
    if($post_id == $home_id){ ?>
    
        <label for="address1">Address Line 1</label>
        <input type="text" name="address1" value="<?php echo $address1?>" size="44"/>
        
        <label for="address2">Address Line 2</label>
        <input type="text" name="address2" value="<?php echo $address2?>" size="44"/>
        
        <label for="address3">Address Line 3</label>
        <input type="text" name="address3" value="<?php echo $address3?>" size="44"/>
        
        <label for="post_code">Post Code</label>
        <input type="text" name="post_code" value="<?php echo $post_code?>" size="44"/>
        
        <label for="phone">Phone</label>
        <input type="text" name="phone" value="<?php echo $phone?>" size="44"/>
        
        <label for="phone_int">Phone (International)</label>
        <input type="text" name="phone_int" value="<?php echo $phone_int?>" size="44"/>
        
        <label for="fax">Fax</label>
        <input type="text" name="fax" value="<?php echo $fax?>" size="44"/>
        
        <label for="fax_int">Fax (International)</label>
        <input type="text" name="fax_int" value="<?php echo $fax_int?>" size="44"/>
        
        <label for="email">Email</label>
        <input type="email" name="email" value="<?php echo $email?>" size="44"/>
        
        <label for="opening_times">Opening Times</label>
        <textarea rows="4" cols="45" name="opening_times"><?php echo $opening_times?></textarea>
        
    <?php }
    
}

function 
meta_options(){
    global 
$post;
    
$custom get_post_custom($post->ID);
    
$post_id $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
    
$page_desc $custom["page_desc"][0];
    
$custom_side $custom["custom_side"][0];
    if(
$post_id !== '5'){ ?>
        
        <label for="page_desc">Page Description: (100 characters max)</label>
        <textarea rows="4" cols="45" name="page_desc" maxlength="100"><?php echo $page_desc?></textarea>
        
        <label for="custom_side">Sidebar:</label>
        <textarea rows="10" cols="45" name="custom_side"><?php echo $custom_side?></textarea>

    <?php 
    
}

function 
save_events(){
    global 
$post;
    
$home_id 5;
    
$post_id $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
    if(
post_id !== $home_id){
        if(
defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
                return 
$post_id;
        }
        
update_post_meta($post_id"page_desc"$_POST["page_desc"]);
        
update_post_meta($post_id"custom_side"$_POST["custom_side"]);
    }
}

function 
save_home(){
    global 
$post;
    
$home_id 5;
    
$post_id $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
    if(
defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
            return 
$home_id;
    }
    
update_post_meta($home_id"address1"$_POST["address1"]);
    
update_post_meta($home_id"address2"$_POST["address2"]);
    
update_post_meta($home_id"address3"$_POST["address3"]);
    
update_post_meta($home_id"post_code"$_POST["post_code"]);
    
update_post_meta($home_id"phone"$_POST["phone"]);
    
update_post_meta($home_id"phone_int"$_POST["phone_int"]);
    
update_post_meta($home_id"fax"$_POST["fax"]);
    
update_post_meta($home_id"fax_int"$_POST["fax_int"]);
    
update_post_meta($home_id"email"$_POST["email"]);
    
update_post_meta($home_id"opening_times"$_POST["opening_times"]);
}

// Display the custom field/meta in a post
// echo $meta_values = get_post_meta($post->ID, 'page_desc', true);
// echo $meta_values = get_post_meta($post->ID, 'custom_side', true);
// echo $meta_values = get_post_meta($home_id, 'address1', true);
// echo $meta_values = get_post_meta($home_id, 'address2', true);
// echo $meta_values = get_post_meta($home_id, 'address3', true);
// echo $meta_values = get_post_meta($home_id, 'post_code', true);
// echo $meta_values = get_post_meta($home_id, 'phone', true);
// echo $meta_values = get_post_meta($home_id, 'phone_int', true);
// echo $meta_values = get_post_meta($home_id, 'fax', true);
// echo $meta_values = get_post_meta($home_id, 'fax_int', true);
// echo $meta_values = get_post_meta($home_id, 'email', true);
// echo $meta_values = get_post_meta($home_id, 'opening_times', true);
AnimalD is offline   Reply With Quote
Old 04-19-2012, 08:37 PM   PM User | #2
angst
Senior Coder

 
angst's Avatar
 
Join Date: Apr 2004
Location: Toronto, Ontario
Posts: 2,112
Thanks: 15
Thanked 122 Times in 122 Posts
angst is on a distinguished road
this is product specific code. try the WP forum: http://wordpress.org/support/
angst is offline   Reply With Quote
Reply

Bookmarks

Tags
meta boxes, php, wordpress

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 05:27 AM.


Advertisement
Log in to turn off these ads.