0

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

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

我对 wordpress 和 PHP 完全陌生。在过去的 48 小时里,我一直在使用“Tutsplus - PHP Essentials”和显然这个网站学习 PHP。

我找到了我修改并添加到我的主题的 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']));

如果有人能帮助我弄清楚为什么这不起作用,以及我所做的改变是否完全正确,我将不胜感激。

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

4

1 回答 1

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');
于 2013-03-11T15:58:12.270 回答