我正在尝试将查询变量保存到帖子中以供日后检索。
我使用这种格式的永久链接:domain.com/%category%/%postname%/
示例:
我创建了以下页面
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),
]
我将名为电子邮件的Query Var添加到页面
domain.com/page-003/
现在我打电话
add_query_arg('email', 'test@abc.com', 'domain.com/page-003/')
我得到了
get_permalink($post_id);
而不是
domain.com/page-003/
我错过了什么?查询变量不是用帖子保存的吗?
答案 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名称。
希望它适合你。