it-swarm.com.de

Ändere den Permalink für einen einzelnen Beitragseintrag

Ich habe den benutzerdefinierten Beitragstyp projects definiert und den Permalink für diese Beitragstypen auf /projects/my-project/ festgelegt. Für eines der Projekte muss ich jedoch eine spezielle URL angeben, sodass es anstelle von /projects/special-project/ auf /special-project/ erscheint.

Ist das möglich?

2
Xavi Ivars

Versuchen Sie, Ihrem functions.php Folgendes hinzuzufügen:

function wpse221475_custom_rewrite_rules() {

  add_rewrite_rule(
    '^(special-project)?', 
    'index.php?post_type=projects&name=$matches[1]', 
    'top'
  );

}

add_action('init', 'wpse221475_custom_rewrite_rules');

Stellen Sie sicher, dass Sie Ihre Umschreiberegeln leeren, nachdem Sie diese Regel hinzugefügt haben.

Besuch:

Dashboard -> Settings -> Permalinks

Oder wenn Sie möchten, können Sie flush_rewrite_rules() programmgesteuert verwenden.

Um Anforderungen für http://example.com/projects/special-project an http://example.com/special-project umzuleiten, können Sie die Anforderung im Hook wp analysieren.

function wpse221475_redirect_request($wp) {

    if ( ! empty($wp->request) && $wp->request === 'projects/special-project' ) {

        wp_redirect(home_url('special-project'), 301);
        exit;

    }

}

add_action('wp', 'wpse221475_redirect_request');

Natürlich gibt es andere Wege/Methoden, um den gleichen Effekt zu erzielen, aber das oben Genannte wird ausreichen.

3
userabuser