Give a unique ID while saving

时间:2014-03-17 作者:BrainBUG

我在我的主题中有一些元框自定义帖子类型(产品)。我的客户要求我在保存产品时自动提供唯一的SKU(元框)。

我的想法:

提供一个随机ID=>必须检查该ID是否存在于其他地方,或者

保存一次后,请给出Post ID=>,因为WP在保存时会分配该ID。

@Milo“此外,在用户保存帖子之前,一篇新帖子已经有了ID”如何在保存帖子并将其放入元框并立即与新帖子一起保存之前获取ID?

谢谢

1 个回复
最合适的回答,由SO网友:Milo 整理而成

当你add a meta box, post对象被传递给输出元框内容的函数,ID立即可用。下面是一个快速的概念证明,在创建新帖子时,它会将ID放在帖子元框的一个字段中:

function wpd_sku_meta_box() {
    add_meta_box(
        \'wpd_sku\',
        \'SKU\',
        \'wpd_render_meta_box\',
        \'post\'
    );
}
add_action( \'add_meta_boxes\', \'wpd_sku_meta_box\' );

function wpd_render_meta_box( $post ) {
    // $post->ID contains the ID of newly created post:
    echo \'<input type="text" id="wpd_sku" name="wpd_sku" value="\' . $post->ID . \'">\';
}

function wpd_sku_save( $post_id ) {
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) 
        return $post_id;

    if ( ! isset( $_POST[\'wpd_sku\'] ) )
        return $post_id;

    $sku = $_POST[\'wpd_sku\'];
    update_post_meta( $post_id, \'_wpd_sku\', $sku );
}
add_action( \'save_post\', \'wpd_sku_save\' );
但请不要按原样使用此代码,请从add_meta_box codex页,其中包含一些nonce和权限检查。

结束

相关推荐

从某个ID开始的循环

是否可以从某个post ID开始循环?我希望所有的帖子都从某个ID开始,体面地。为了解释,我必须先做出一些假设。假设我的WordPress数据库有20篇文章。显然,每个帖子都有一个ID,并假设这些帖子的ID范围为1到20。还假设当我们通过循环加载post时,默认情况下使用的是所有内容。因此,循环将从20到1检索记录/帖子。如果范围限制为10,则第1页将检索20到11,第2页将检索10到1。现在,回到我的问题上来。假设我想接收记录17到8。我是否可以通过某种方式将17传递给循环,并从17到8检索10条记录?