带有计数器的自定义字段默认值

时间:2013-06-03 作者:Ahmad Ajmi

我有一个名为machine的自定义post类型和一个自定义字段reference\\u number。我想在创建新机器时向自定义字段添加一个默认值,并在保存之前显示该值。

以下是我到目前为止的想法。

function set_default_meta($post_ID){
    $current_field_value = get_post_meta($post_ID,\'reference_number\',true);

    // this needs to be like, machine 1, machine 2, ..
    $default_meta = \'machine \'; 
    if ($current_field_value == \'\' && !wp_is_post_revision($post_ID)){
            add_post_meta($post_ID,\'reference_number\',$default_meta,true);
    }
    return $post_ID;
}

add_action(\'wp_insert_post\',\'set_default_meta\');
该代码起作用,并将“machine”值添加到自定义字段,但只有在保存帖子之后。当我刚开始添加帖子时,如何显示它。我如何在每个新帖子中添加一个增加一个的计数器变量。

谢谢

编辑

非常感谢@s\\u ha\\u dum的代码,我还问了question 在Pods论坛上,他们在全局变量方面提供了很多帮助。所以最后的代码是

1-在pods admin中添加全局变量作为默认值

 {@globals.reference_number} 
2-在函数中添加此代码。php

// Set reference number to be dynamicaly increased every time machine created.
function get_next_reference_number() {
    global $wpdb;
    $ref = $wpdb->get_var("SELECT max(cast(meta_value as unsigned)) FROM wp_postmeta WHERE meta_key=\'reference_number\'");
    $GLOBALS[ \'reference_number\' ] = (!empty($ref)) ? $ref + 1 : 1;
}

add_action(\'wp_insert_post\',\'get_next_reference_number\');
这是可行的。

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

我不知道pods框架是如何工作的,所以我无法告诉您如何设置值,但我可以让您开始。

首先,不要存储整个“机器”%n字符串。所有条目的“机器”部分都是相同的,对吗?然后只保存%n“。

现在,当您需要添加新帖子时。。。

function get_next_reference_number() {
  global $wpdb;
  $ref = $wpdb->get_var("SELECT MAX(meta_value) FROM {$wpdb->postmeta} WHERE meta_key = \'reference_number\'");
  return (!empty($ref)) ? $ref + 1 : 1;
}
希望您可以将其应用到Pods代码中。

结束

相关推荐