0

我正在尝试将 Query Vars 保存到帖子中以供以后检索。

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

例子:

  1. 我创建以下页面

    domain.com/page-003/
    
  2. 我将名为email的Query Var 添加到页面

    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
    

我错过了什么?查询变量不是与帖子一起保存的吗?

4

1 回答 1

0

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

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

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

更多细节:https ://codex.wordpress.org/Function_Reference/update_post_meta

然后在检索过程中,您可以像 template_redirect 或更早的帖子一样钩入一个 HOOK,您可以获取 post_meta 以获取电子邮件,然后添加到查询 arg:

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

然后

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

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

更新: 如何从 Meta Value 更新/填写 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 名称。

希望对你有效。

于 2017-03-13T16:20:06.420 回答