无法使用帖子保存查询变量

时间:2017-03-13 15:36:44

标签: wordpress permalinks query-variables

我正在尝试将查询变量保存到帖子中以供日后检索。

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

示例:

  1. 我创建了以下页面

    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
        url(r'^articles/2003/$', views.special_case_2003),
        url(r'^articles/([0-9]{4})/$', views.year_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
    ]
    
  2. 我将名为电子邮件的Query Var添加到页面

    domain.com/page-003/
    
  3. 现在我打电话

    add_query_arg('email', 'test@abc.com', 'domain.com/page-003/')
    

    我得到了

    get_permalink($post_id);
    

    而不是

    domain.com/page-003/
    
  4. 我错过了什么?查询变量不是用帖子保存的吗?

1 个答案:

答案 0 :(得分: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

然后在检索过程中,您可以尽早挂钩到HOOK,比如template_redirect或更早的帖子,你可以获得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;
}

&#39; REF&#39;是Ninja形式的字段名称。 &#39; _listing_mls&#39;是来自WP数据库的meta_key名称。

希望它适合你。