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

时间:2019-12-16 作者:Cinta

假设我有一个帖子类型叫做jobs, 还有一个叫做contact 里面有表格。现在我想在每个工作url上显示联系人页面,以/contact. 所以job-1/contact, job2/contact

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

这可能吗?

1 个回复
SO网友:nmr

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

您需要一个查询变量(例如。jobname) 存储的名称jobs 自定义帖子类型
您还需要一个重写规则来解释/jobs/{post-slug}/contact 地址为“联系人”页面并保留{post-slug} in查询变量jobname.

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) 在“联系人”页面上get_query_var() 作用

$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];
}

相关推荐