首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取每个帖子的相关页面:/post-1/联系人。/post-2/联系人

如何获取每个帖子的相关页面:/post-1/联系人。/post-2/联系人
EN

WordPress Development用户
提问于 2019-12-16 18:37:32
回答 1查看 26关注 0票数 0

假设我有一个名为jobs的post类型,还有一个名为contact的页面,其中包含一个表单。现在,我希望联系人页面显示在每个作业网址上,以/contact结尾。所以job-1/contactjob2/contact等。

我希望显示相同的联系人页面,但访问当前的作业id。

这个是可能的吗?

EN

回答 1

WordPress Development用户

发布于 2019-12-16 23:34:21

是的,这是可能的,但是想想WebElaine在评论中写了什么吧。

您需要一个查询变量(例如jobname)来存储jobs自定义post类型的名称。您还需要一个重写规则,将/jobs/{post-slug}/contact地址解释为"contact“页面,并将{post-slug}保留在查询变量jobname中。

代码语言:javascript
复制
add_filter( 'query_vars', 'se354723_query_vars' );
add_action( 'init', 'se354723_rewrite_job_contact' );

function se354723_query_vars( $vars )
{
    $vars[] = "jobname";
    return $vars;
}
function se354723_rewrite_job_contact()
{
    $cpt_slug    = 'jobs';
    $target_page = 'contact-page-slug';
    add_rewrite_rule(
        "$cpt_slug/([^/]+)/contact/?$",
        'index.php?pagename='. $target_page .'&post_type=page&jobname=$matches[1]',
        'top'
    );    
}

您可以使用jobname函数在"contact“页面上检查新查询变量( get_query_var() )的值。

代码语言:javascript
复制
$jobID = 0;
$jobname = get_query_var('jobname', false);
if ( !empty($jobname) )
{
    $jobname = sanitize_title_for_query( $jobname );
    $arg = [
        'post_type' => 'jobs',
        'name'      => $jobname,
        'fields'    => 'ids',
        'posts_per_page' => 1,
    ];
    $result = get_posts( $arg );
    if ( is_array($result) && !empty($result) )
        $jobID = (int)$result[0];
}
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/354723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档