php - 管理面板中 Wordpress Post 数组的奇怪问题

标签 php wordpress custom-post-type meta-boxes

我对我为客户构建的 Wordpress 站点上的 Post Array 问题感到非常困惑。我希望有人以前看过这个!

我已经注册了自定义帖子类型:

register_post_type( 'products', array(
    'labels' => array(
        'name' => __( 'Products' ),
        'singular_name' => __( 'Product' ),
    ),
    'public' => true,
    'menu_position' => 20,
    'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments', ),
    'taxonomies' => array('category'),
    'capability_type' => 'post',
    'rewrite' => array( 'slug' => 'products','with_front' => TRUE),
    'register_meta_box_cb' => 'product_page_meta_box'
));

我在其中注册了以下元框的回调:

function product_page_meta_box() {
    add_meta_box('product_meta_box_content', 'Product Specifications',  'product_meta_box_content', 'products');
}

function product_meta_box_content( $post ) {

    wp_nonce_field( plugin_basename( __FILE__ ), 'product_noonce' );

    echo '<div class="inside>';
        var_dump($post);
        echo '<p>Please detail the product specifics here:</p>';
    echo '</div>';
}

令我沮丧的是,管理页面上面的 var_dump 的结果是:

string(3) "258" ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2012-08-27 19:33:30" ["post_date_gmt"]=> string(19) "2012-08-27 19:33:30" ["post_content"]=> string(0) "" ["post_title"]=> string(10) "The Wensum" ["post_excerpt"]=> string(20) "Testing the excerpt!" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(6) "closed" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(22) "large-6-perch-dovecote" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2012-10-04 16:50:19" ["post_modified_gmt"]=> string(19) "2012-10-04 16:50:19" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> string(1) "0" ["guid"]=> string(53) "http://dovecotes.local//?post_type=products&p=258" ["menu_order"]=> string(1) "0" ["post_type"]=> string(8) "products" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["ancestors"]=> array(0) { } ["filter"]=> string(4) "edit" }

在管理区没有类型,完全无效;在相关页面上,虽然 post 数组很好,但 ID 有一个键,它是一个有效的对象:

object(stdClass)#145 (25) { ["ID"]=> int(258) ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2012-08-27 19:33:30" ["post_date_gmt"]=> string(19) "2012-08-27 19:33:30" ["post_content"]=> string(0) "" ["post_title"]=> string(10) "The Wensum" ["post_excerpt"]=> string(20) "Testing the excerpt!" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(6) "closed" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(22) "large-6-perch-dovecote" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2012-10-04 16:50:19" ["post_modified_gmt"]=> string(19) "2012-10-04 16:50:19" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(54) "http://dovecotes.local//?post_type=products&p=258" ["menu_order"]=> int(0) ["post_type"]=> string(8) "products" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["ancestors"]=> array(0) { } ["filter"]=> string(3) "raw" }

最佳答案

我不能保证这会起作用,但在定义自定义帖子类型时我总是避免使用“register_meta_box_cb”以支持“add_meta_boxes”操作 Hook 。

除了“supports”参数中的额外逗号外,您的代码看起来是正确的,因此您的示例中没有任何内容会让我相信它可能是罪魁祸首,除非它是优先级差异。我也不确定 id 和回调参数是否允许在你的 metabox 参数中相同,所以我也冒昧地改变了它:

register_post_type( 'products', array(
    'labels' => array(
        'name' => __( 'Products' ),
        'singular_name' => __( 'Product' ),
    ),
    'public' => true,
    'menu_position' => 20,
    'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments' ),
    'taxonomies' => array('category'),
    'capability_type' => 'post',
    'rewrite' => array( 'slug' => 'products','with_front' => TRUE)
));
add_action('add_meta_boxes', 'product_page_meta_box');
function product_page_meta_box() {
    add_meta_box('product_meta_box_content', 'Product Specifications',  'product_meta_box_content_cb', 'products');
}

function product_meta_box_content_cb( $post ) {

    wp_nonce_field( plugin_basename( __FILE__ ), 'product_noonce' );

    echo '<div class="inside>';
        var_dump($post);
        echo '<p>Please detail the product specifics here:</p>';
    echo '</div>';
}

如果这没有帮助,那么在没有看到更多代码的情况下我不确定它还会是什么。

关于php - 管理面板中 Wordpress Post 数组的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808912/

相关文章:

custom-fields - WordPress 显示自定义帖子类型及其字段

php - 自定义帖子类型的WordPress页面父级

php - 验证当前 ssl 是否是服务器的 ssl

php - 在Wordpress中获取默认日期格式

php - 将用户添加到 SQL 数据库

mysql - 查询以选择匹配条件语句中所有帖子元字段的行数(帖子)

php - WooCommerce 中产品缩略图的 slider

mysql - ACF 将中继器子字段值移动到帖子中的字段

php - 如何在magento中获取产品属性值

php - 如何获取原生 PHP 类构造函数的类型提示