Kombiniere 2 verschiedene benutzerdefinierte Post-Slugs zu einem einzigen Permalink?

Brauchen Sie Hilfe mit dieser URL-Umschreibung. Ich habe 2 benutzerdefinierte Posts eingerichtet, “Firma” und “Job”. Ich habe eine Single-Company-Seite und eine Single-Job-Seite, die gut funktionieren. Ein Unternehmen kann viele Jobs haben, und ich verwalte die Beziehung zwischen Jobs und Unternehmen mithilfe von Post-Meta.

Die URL des einzelnen Unternehmens lautet http://..../company/abc-intl , und die URL des einzelnen Jobs lautet http://..../job/photoshop-designer .

Ich möchte, dass eine einzelne Job-URL den Slug der Firma enthält, zu der sie gehört. Für das obige Beispiel sollte es also http://..../company/abc-intl/job/photoshop-designer .

Ich habe viel mit ‘add_rewrite_rule’, ‘add_rewrite_tag’ versucht, aber es schien nicht zu funktionieren. Bitte irgendwelche Ideen, wie man diese URL erreicht?

Solutions Collecting From Web of "Kombiniere 2 verschiedene benutzerdefinierte Post-Slugs zu einem einzigen Permalink?"

Hier ist die Lösung, wenn jemand auf solch eine “seltsame” Anforderung stößt;) Auch wenn der Job CPT (oder ein CPT, den Sie zuordnen möchten) veröffentlicht wird, müssen Sie die ID des Unternehmens CPT speichern (dessen Slug verwendet wird) den anderen Teil des Permalinks bilden) als Post-Meta für den Job.

 < ?php add_filter('init', 'add_page_rewrite_rules'); function add_page_rewrite_rules(){ global $wp_rewrite, $wp; add_rewrite_rule('^company/([^/]+)/job/([^/]+)', 'index.php?company=$matches[1]&job=$matches[2]', 'top'); $job_structure = '/job/%job%'; $wp_rewrite->add_rewrite_tag("%job%", '([^/]+)', "job="); $wp_rewrite->add_permastruct('job', $job_structure, false); } add_filter('post_type_link', 'job_permalink', 10, 3); function job_permalink($permalink, $post_id, $leavename) { $post = get_post($post_id); $rewritecode = array( '%job%', 'job' ); if ( '' != $permalink && !in_array($post->post_status, array('draft', 'pending', 'auto-draft')) ) { job_link = ''; if ( strpos($permalink, 'job') !== false ) { $company_id = get_post_meta($post->ID, 'job_company_id', true); $company = basename(get_permalink($company_id)); $job_link = 'company'.'/'.$company; } $rewritereplace = array( $post->post_name, $job_link.'/job' ); $permalink = str_replace($rewritecode, $rewritereplace, $permalink); } else { // if they're not using the fancy permalink option } return $permalink; } ?> 

Hoffe das hilft jemandem! Sie können mich kontaktieren, wenn Sie bei der Umsetzung stecken bleiben.