使用ACF默认值自动递增数字字段

时间:2021-05-13 作者:Joy

我试图创建一个名为“的字段”;数字“;作为具有高级自定义字段的自动递增字段。

带WP\\U查询的此函数返回最后插入的;数字;。

function get_last_numero(){
$args = array(
        \'posts_per_page\'=> 1,
        \'post_type\'     => \'sep_doc\',
        \'post_status\' => \'publish, draft, trash\',
        \'meta_key\'      => \'numero\',
        \'orderby\' => \'meta_value_num\',
        \'order\'         => \'DESC\'
    );
$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        $pid = get_the_ID();
        $numero = get_field(numero,$pid);
    }
}
wp_reset_postdata();
return (int)$numero;
}这将设置ACF中的默认值;数字“;就像我在$numero_id 变量

$numero_id =  get_last_numero() + 1; // tested with static value 123456 - IT\'s WORKING

add_filter(\'acf/load_field/name=numero\', function($field) use ($numero_id) {
   $field[\'default_value\'] = $numero_id;
   return $field;
});
静态值和所有其他函数,如get_the_ID() 很好用。但是当我把get\\u last\\u numero()放进去时,网站崩溃了,出现了错误500。

我相信我所说的原因;数字“;“内部”;数字“;,有谁能对此提出任何解决方案或解决方法吗。

编辑:使用如下解决方案-

var num = <?php echo get_last_numero(); ?>;
$("#acf-post-field_606b65932d135").val(num+1).prop(\'readonly\',true);

1 个回复
SO网友:Jos Faber

不是直接的回答,而是两条建议。

首先get_last_numero 不一定返回最大的数字。它返回最后一个。如果您完全可以控制插入,那么就不会有问题,但是一旦您要进行导入,或者手动或以其他方式更改数据库中的内容,您可能会带来问题。所以,在你的get_last_numero 函数,您可能希望根据该(元)查询值DESC进行排序。ACF有一个用于元查询进行数字排序的函数。

第二get_last_numero() + 1 这似乎可行,但您正在添加一个字符串和一个数字,这不是一件好事。PHP在大多数情况下都能解决这个问题,但由于ACF将为字段返回一个字符串,并且您知道这一点,因此可以通过在值前面加上(int), 所以return (int)$numero