在页面编辑中添加自定义元复选框

时间:2013-03-10 20:08:21

标签: php wordpress meta-boxes

我再次遇到一个我不知道如何解决的问题。

我正在尝试在wordpress的页面编辑屏幕中添加一个标有“特色产品”的自定义复选框。我们的想法是,当前打勾的产品页面都会在网站的主页上显示其信息。

我是wordpress和PHP的新手。我过去48小时都在学习PHP,使用“Tutsplus - PHP essentials”,显然这个网站。

我找到了这段代码,我将其修改并添加到我的主题的function.php中,该代码将复选框放在页面编辑屏幕中。

function register_post_assets(){
    add_meta_box('featured-product', __('Featured Product'), 'add_featured_meta_box', 'page', 'advanced', 'high');
}
add_action('admin_init', 'register_post_assets', 1);

function add_featured_meta_box($post){
    $featured = get_post_meta($post->ID, '_featured-product', true);
    echo "<label for='_featured-product'>".__('Feature this product?')."</label>";
    echo "<input type='checkbox' name='_featured-product' id='featured-product' value='1' ".checked(1, $featured)." />";
}

下面需要添加第二段代码,我认为是在保存/更新编辑页面时保存复选框选项。

function save_featured_meta($post_id){
    if(isset($_REQUEST['featured-product']))
        update_post_meta(esc_attr($post_id, '_featured-product', esc_attr($_REQUEST['featured-product'])); 
}
add_action('save_post', 'save_featured_meta');

但是每当我尝试运行包含第二段代码的页面时,我都会收到通知,说明该行有错误 update_post_meta(esc_attr($page_id, '_featured-product', esc_attr($_REQUEST['featured-product']));

如果有人能帮助我弄清楚为什么这样做不起作用,如果我所做的改变是对的,我会很感激。

那么在主页上回显这个选择页面标题的最简单/最好的方法是什么呢?

1 个答案:

答案 0 :(得分:0)

尝试

function save_featured_meta($post_id){
    if(isset($_REQUEST['featured-product']))
        update_post_meta( $post_id, '_featured-product', esc_attr($_REQUEST['featured-product'])); 
}
add_action('save_post', 'save_featured_meta');