无法使用 post 保存查询变量

Unable to save Query Vars with a post

我正在尝试将查询变量保存到 post 以供以后检索。

我正在使用这种格式的永久链接:domain.com/%category%/%postname%/

示例:

  1. 我创建了一个关注页面

    domain.com/page-003/
    
  2. 我将名为 email 的查询变量添加到页面

    add_query_arg('email', 'test@abc.com', 'domain.com/page-003/')
    
  3. 现在我打电话给

    get_permalink($post_id);
    

    我明白了

    domain.com/page-003/
    

    而不是

    domain.com/page-003/?email=test@abc.com
    

我错过了什么?查询变量不是用 post 保存的吗?

您想保存一些稍后要恢复的元数据并将其作为查询参数添加到 URL 中。

您需要先将其保存为 post_meta,例如当您使用该数据保存 post 时。您使用:

<?php update_post_meta(get_the_ID(), 'email_address', 'abc@mail.com'); ?>

更多详情:https://codex.wordpress.org/Function_Reference/update_post_meta

然后在检索过程中,你可能会在template_redirect或更早的post之前挂入一个HOOK你可以得到post_meta来获取电子邮件然后添加到查询参数:

<?php $email = get_post_meta( get_the_ID(), 'email_address' ); ?>

然后

esc_url( add_query_arg( 'email', $email, get_permalink( get_the_ID() ) ) );

类似的东西,代码未经测试,我只是写在这里,你可以阅读上面使用的每个函数的codex中的详细文档。

更新: 如何 update/fill 来自元值的 Ninja 表单字段:

add_filter( 'ninja_forms_render_default_value', 'wm_the_value' , 10 , 3);

function wm_the_value( $default_value, $field_type, $field_settings ) {
    if( 'textbox' == $field_type && in_array('ref' , $field_settings)){
        $default_value = get_post_meta(get_the_ID(),'_listing_mls', true);
    }

    return $default_value;
}

'ref' 是 Ninja 形式的字段名称。 '_listing_mls' 是来自 WP 数据库的 meta_key 名称。

希望对你有用。