UPDATE_POST_META在函数中不起作用

时间:2015-05-02 作者:Eckstein

我正在尝试获取一些自定义字段元数据(通过ACF插件生成),并将其保存为带有函数的post meta。这就是我想到的:

function tps_create_slotcode($post_id) {
    if (get_post_type($post_id) == \'space-rental\') {
        $slotCodes = array();
        while (have_rows(\'dates_and_times\', $post_id)) {
            the_row();
            $date = get_sub_field(\'date\');
                $dateStamp = strtotime($date);
            $start = get_sub_field(\'start_time\');
            $end = get_sub_field(\'end_time\');
            $space = get_sub_field(\'space\'); //term id
                $spaceTerm = get_term($space, \'spaces\');

            $slotCodes[] = $spaceTerm->slug.\'_\'.$start.\'_\'.$date;
        }
        update_post_meta($post_id, \'slotCodes\', $slotCodes);
    }
}
add_action(\'acf/save_post\', \'tps_create_slotcode\', 40);
我已经测试了所有变量,以确保它们产生了一个值,而且它们确实产生了一个值,但是update\\u post\\u meta调用没有做任何事情。

如果我将update\\u post\\u meta放在循环中,它会工作,但只保存最后的结果(显然),因为这是循环的最后一次迭代。这就是代码:

    function tps_create_slotcode($post_id) {
        if (get_post_type($post_id) == \'space-rental\') {
            while (have_rows(\'dates_and_times\', $post_id)) {
                the_row();
                $date = get_sub_field(\'date\');
                    $dateStamp = strtotime($date);
                $start = get_sub_field(\'start_time\');
                $end = get_sub_field(\'end_time\');
                $space = get_sub_field(\'space\'); //term id
                    $spaceTerm = get_term($space, \'spaces\');

                $slotCodes = $spaceTerm->slug.\'_\'.$start.\'_\'.$date;
update_post_meta($post_id, \'slotCodes\', $slotCodes);
            }
            update_post_meta($post_id, \'slotCodes\', $slotCodes);
        }
    }
    add_action(\'acf/save_post\', \'tps_create_slotcode\', 40);
有人能告诉我第一个例子中我做错了什么吗?update\\u post\\u meta是否不会保存数据数组或其他内容?

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

找到了答案。我不得不重新阅读了大量的法典,以了解当您传递一个数组来更新\\u post\\u meta时,它是序列化的。通过对返回值使用maybe\\u unserialize(),我可以访问这些值。希望这对未来的搜索者有所帮助!

结束
UPDATE_POST_META在函数中不起作用 - 小码农CODE - 行之有效找到问题解决它

UPDATE_POST_META在函数中不起作用

时间:2015-05-02 作者:Eckstein

我正在尝试获取一些自定义字段元数据(通过ACF插件生成),并将其保存为带有函数的post meta。这就是我想到的:

function tps_create_slotcode($post_id) {
    if (get_post_type($post_id) == \'space-rental\') {
        $slotCodes = array();
        while (have_rows(\'dates_and_times\', $post_id)) {
            the_row();
            $date = get_sub_field(\'date\');
                $dateStamp = strtotime($date);
            $start = get_sub_field(\'start_time\');
            $end = get_sub_field(\'end_time\');
            $space = get_sub_field(\'space\'); //term id
                $spaceTerm = get_term($space, \'spaces\');

            $slotCodes[] = $spaceTerm->slug.\'_\'.$start.\'_\'.$date;
        }
        update_post_meta($post_id, \'slotCodes\', $slotCodes);
    }
}
add_action(\'acf/save_post\', \'tps_create_slotcode\', 40);
我已经测试了所有变量,以确保它们产生了一个值,而且它们确实产生了一个值,但是update\\u post\\u meta调用没有做任何事情。

如果我将update\\u post\\u meta放在循环中,它会工作,但只保存最后的结果(显然),因为这是循环的最后一次迭代。这就是代码:

    function tps_create_slotcode($post_id) {
        if (get_post_type($post_id) == \'space-rental\') {
            while (have_rows(\'dates_and_times\', $post_id)) {
                the_row();
                $date = get_sub_field(\'date\');
                    $dateStamp = strtotime($date);
                $start = get_sub_field(\'start_time\');
                $end = get_sub_field(\'end_time\');
                $space = get_sub_field(\'space\'); //term id
                    $spaceTerm = get_term($space, \'spaces\');

                $slotCodes = $spaceTerm->slug.\'_\'.$start.\'_\'.$date;
update_post_meta($post_id, \'slotCodes\', $slotCodes);
            }
            update_post_meta($post_id, \'slotCodes\', $slotCodes);
        }
    }
    add_action(\'acf/save_post\', \'tps_create_slotcode\', 40);
有人能告诉我第一个例子中我做错了什么吗?update\\u post\\u meta是否不会保存数据数组或其他内容?

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

找到了答案。我不得不重新阅读了大量的法典,以了解当您传递一个数组来更新\\u post\\u meta时,它是序列化的。通过对返回值使用maybe\\u unserialize(),我可以访问这些值。希望这对未来的搜索者有所帮助!

相关推荐

functions php file

好的,我正在编辑我的函数。Wordpress中的php文件(关于我的子主题),我删除了一行代码(在删除之前我复制了代码)。这导致了白色的死亡屏幕,所以我简单地粘贴回我删除的代码(是的,我将它粘贴回我删除它的位置),但我仍然有白色的死亡屏幕。我已经完成了这些功能。我上周完成的一个备份中的php文件(功能齐全),并通过FTP将其上载到正确的文件夹,但没有任何效果。我已经尝试再次激活父主题,并创建了另一个子主题,以便比较这两个功能。php文件(将全新的、有效的子主题与不再工作的原始子主题进行比较),代码看起来是