将字符串与 WP_Query 中的数字进行比较

Compare strings as numbers in WP_Query

我正在对名为“任务”的自定义 post 类型执行 WP_Query,该类型有一个字段“阶段”。我需要获得所有 post 的“阶段” >= 另一个任务的“阶段”。问题是 stage 是一个字符串值,因此在元查询中使用 >= 运算符将不起作用。

目前我的技巧是创建一个包含数字 $stage 到 50 的字符串值的数组,并查询 posts 谁的舞台在该数组中。这暂时可行,因为没有阶段超过 12,但不是一个非常可扩展或动态的解决方案。我想知道在使用运算符之前是否有更好的方法来改变 WP_query 中收到的值?

    $stage = get_field('stage', $task_id);

    $future_tasks = array();
    for ($i = intval($stage); $i <= intval($stage) + 50; $i++) {
        array_push($future_tasks, strval($i));
    }

    $tasks_query_args = array(
        'post_type' => array('task'),
        'posts_per_page' => -1,
        'order' => 'DESC',
        'meta_query' => array(
            '0' => array(
                'key' => 'project',
                'value' => $project_id,
                'compare' => '=',
            ),
            '1' => array(
                'key' => 'stage',
                'value' => $future_tasks,
                'compare' => 'IN',
            ),
            'relation' => 'AND',
        ),
    );

理想情况下,查询的第二个参数类似于:

      '1' => array(
            'key' => 'stage',
            'value' => intval($stage),
            'compare' => '>=',
        ),

但这行不通,因为 stage 字段的值是一个字符串。

想知道是否有关于如何更好地实现这一点的想法?

似乎,使用 numeric 类型可以解决问题:

$tasks_query_args = array(
    'post_type'      => array( 'task' ),
    'posts_per_page' => - 1,
    'order'          => 'DESC',
    'meta_query'     => array(
        '0'        => array(
            'key'     => 'project',
            'value'   => intval( $project_id ),
            'compare' => '=',
            'type'    => 'numeric',
        ),
        '1'        => array(
            'key'     => 'stage',
            'value'   => intval( $task_id ),
            'compare' => '>=',
            'type'    => 'numeric',
        ),
        'relation' => 'AND',
    ),
);