GET_POST_META和ADD_POST_META不起作用

时间:2019-07-23 作者:Alt C

我有如下代码,但它返回false. 中有数据$ggowlccpy_transaction_details_capture 并且订单id被正确传递。这是woocommerce订单元。

我不知道为什么它会被保存下来。

<?php
$ggowlccpy_transaction_details_capture = array(
    \'merchant_ref\'    => $ggowlccpy_order_id,
    \'transaction_id\'  => $ggowlccpy_response[\'transaction_id\'],
    \'transaction_tag\' => $ggowlccpy_response[\'transaction_tag\'],
    \'method\'          => $ggowlccpy_response[\'method\'],
    \'amount\'          => $ggowlccpy_response[\'amount\'],
    \'currency_code\'   => $ggowlccpy_response[\'currency\'],
    \'positionofsave\'  => \'captured\',
);

update_post_meta(
    $post->ID,
    \'_ggowlccpy_trasaction_capture\',
    $ggowlccpy_transaction_details_capture
);

add_post_meta(
    $post->ID,
    \'_ggowlccpy_refund_details_get\',
    base64_encode( serialize( $ggowlccpy_transaction_details_capture ) )
);

$data = get_post_meta(
    $ggowlccpy_order_id,
    $key = \'_ggowlccpy_refund_details_get\',
    $single = false
);

$tb_meta_unserialized = unserialize( base64_decode( $data ) );

error_log( var_export( $tb_meta_unserialized, 1 ) );

echo $tb_meta_unserialized;

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

您正在将事务详细信息保存为post meta中的序列化对象,然后尝试搜索特定的订单ID。您的问题如下:

$data = get_post_meta( $ggowlccpy_order_id, $key = \'_ggowlccpy_refund_details_get\',
                       $single = false );
get_post_meta 需要post ID,但您正在将要搜索的订单ID传递给它。

如何搜索订单ID?问题是它被打包到一个序列化对象中。一种方法是还将订单ID存储为单独的元值,以便您可以直接搜索它,例如(未测试抱歉)

add_post_meta( $post->ID, \'_ggowlccpy_merchant_ref\', $ggowlccpy_order_id);

$meta_query = new WP_Meta_Query(array(
                  meta_key = \'_ggowlccpy_merchant_ref\',
                  meta_value = $ggowlccpy_order_id,
                  compare = \'=\'));
$orders = $wpdb->get_results($meta_query->get_sql( \'post\', $wpdb->posts, \'ID\' ));
无法匹配现有的序列化值:您正在对其进行base64编码,以隐藏数据库中的值。(至少我想这是为了掩盖它:通常不需要对PHP序列化值的输出进行base64编码。)如果这不是base64编码的,则您可以(例如)序列化订单ID,然后搜索\\u ggowlcpy\\u return\\u details\\u获取与序列化订单ID类似(即包含为子字符串)的值,然后反序列化所有结果,并检查每个结果的商户\\u ref=订单ID,直到找到正确的结果。然而,如果您确实需要通过这个查询,那么我认为一个单独的新post\\u meta值更容易更好。

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在