URL-Präfix für Beiträge WordPress

Lesezeit: 5 Minuten

Ich habe also eine Website auf einer WordPress-Engine. Und ich möchte Post-URLs aussehen lassen http://website.com/blog/post-name/ oder http://website.com/blog/Kategorienname/Beitragsname/. Aber alles andere wird so aussehen http://website.com/seitenname/. Ich möchte nur das Präfix „Blog“ zu den URLs für alle Beiträge, aber nicht für Seiten hinzufügen. Meine Permalink-Einstellungen sind /%postname%/. Wenn ich /blog/%postname%/ setze, habe ich das Präfix „blog“ in jeder URL meiner Website 🙁 Ich kann keine Lösung im WordPress-Admin-Backend finden und ich habe kein akzeptables Plugin dafür gefunden. Irgendwelche Hilfe wird geschätzt, danke.

1) Fügen Sie diese Umschreibung am Ende von Ihnen hinzu function.php

function add_rewrite_rules( $wp_rewrite )
{
    $new_rules = array(
        'blog/(.+?)/?$' => 'index.php?post_type=post&name=". $wp_rewrite->preg_index(1),
    );

    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action("generate_rewrite_rules', 'add_rewrite_rules'); 

function change_blog_links($post_link, $id=0){

    $post = get_post($id);

    if( is_object($post) && $post->post_type == 'post'){
        return home_url('/blog/'. $post->post_name."https://stackoverflow.com/");
    }

    return $post_link;
}
add_filter('post_link', 'change_blog_links', 1, 3);

2) Gehen Sie zu Einstellungen > Permalinks und klicken Sie auf Save Changes.

Benutzeravatar von BMcCain
BMcCain

Erstellen Sie eine Kategorie namens blog und verwenden Sie die Permalink-Struktur /%category%/%postname%/.

  • Danke, an diesen Weg hatte ich auch gedacht. Aber ich habe ein paar Kategorien, und ich möchte ‘Blog’ nicht in der Katzenliste haben. Sicher, ich kann die „Blog“-Katze mit ein paar Hacks verstecken. Aber vielleicht gibt es eine elegantere Lösung.

    – Jaroslaw Rogoza

    3. September 2011 um 10:00 Uhr

  • Hallo, hast du die Lösung dafür gefunden, ich habe auch das gleiche Problem

    – Edesa

    5. August 2012 um 7:03 Uhr

Benutzeravatar von timhc22
timhc22

Ich war das:

add_action( 'init', 'redefine_post', 1 );
function redefine_post() {
    register_post_type( 'post', array(
        'labels' => array(
            'name_admin_bar' => _x( 'Post', 'add new on admin bar' ),
        ),
        'public'  => true,
        '_builtin' => false,
        '_edit_link' => 'post.php?post=%d',
        'capability_type' => 'post',
        'map_meta_cap' => true,
        'hierarchical' => false,
        'rewrite' => array( 'slug' => 'blog' ),
        'query_var' => false,
        'has_archive' => true,
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
    ) );
}

Es beinhaltet das Erstellen eines benutzerdefinierten Post-Typs (was etwas lästig ist), aber es überschreibt und funktioniert mit Post.

Ich wünschte, es gäbe einen besseren Weg, dies zu tun! (Andernfalls ja, Sie bekommen /blog/ vor allem, wenn Sie nur die Permalinks ändern).

Gehen Sie zu Einstellungen > Permalinks, wählen Sie „Benutzerdefinierte Struktur“ und schreiben Sie dieses Feld in „/blog/%postname%/“ um. Ihr Beitrag erhält das Präfix /blog/, Ihre Seiten jedoch nicht. Ich habe es mit WordPress 5.2.2 getestet

function golden_oak_web_design_blog_generate_rewrite_rules( $wp_rewrite ) {
  $new_rules = array(
    '(([^/]+/)*blog)/page/?([0-9]{1,})/?$' => 'index.php?pagename=$matches[1]&paged=$matches[3]',
    'blog/([^/]+)/?$' => 'index.php?post_type=post&name=$matches[1]',
    'blog/[^/]+/attachment/([^/]+)/?$' => 'index.php?post_type=post&attachment=$matches[1]',
    'blog/[^/]+/attachment/([^/]+)/trackback/?$' => 'index.php?post_type=post&attachment=$matches[1]&tb=1',
    'blog/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
    'blog/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
    'blog/[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?post_type=post&attachment=$matches[1]&cpage=$matches[2]',     
    'blog/[^/]+/attachment/([^/]+)/embed/?$' => 'index.php?post_type=post&attachment=$matches[1]&embed=true',
    'blog/[^/]+/embed/([^/]+)/?$' => 'index.php?post_type=post&attachment=$matches[1]&embed=true',
    'blog/([^/]+)/embed/?$' => 'index.php?post_type=post&name=$matches[1]&embed=true',
    'blog/[^/]+/([^/]+)/embed/?$' => 'index.php?post_type=post&attachment=$matches[1]&embed=true',
    'blog/([^/]+)/trackback/?$' => 'index.php?post_type=post&name=$matches[1]&tb=1',
    'blog/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&name=$matches[1]&feed=$matches[2]',
    'blog/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&name=$matches[1]&feed=$matches[2]',
    'blog/page/([0-9]{1,})/?$' => 'index.php?post_type=post&paged=$matches[1]',
    'blog/[^/]+/page/?([0-9]{1,})/?$' => 'index.php?post_type=post&name=$matches[1]&paged=$matches[2]',
    'blog/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?post_type=post&name=$matches[1]&paged=$matches[2]',
    'blog/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?post_type=post&name=$matches[1]&cpage=$matches[2]',
    'blog/([^/]+)(/[0-9]+)?/?$' => 'index.php?post_type=post&name=$matches[1]&page=$matches[2]',
    'blog/[^/]+/([^/]+)/?$' => 'index.php?post_type=post&attachment=$matches[1]',
    'blog/[^/]+/([^/]+)/trackback/?$' => 'index.php?post_type=post&attachment=$matches[1]&tb=1',
    'blog/[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
    'blog/[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
    'blog/[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?post_type=post&attachment=$matches[1]&cpage=$matches[2]',
  );
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'golden_oak_web_design_blog_generate_rewrite_rules' );

function golden_oak_web_design_update_post_link( $post_link, $id = 0 ) {
  $post = get_post( $id );
  if( is_object( $post ) && $post->post_type == 'post' ) {
    return home_url( '/blog/' . $post->post_name );
  }
  return $post_link;
}
add_filter( 'post_link', 'golden_oak_web_design_update_post_link', 1, 3 );

  • Fügen Sie das obige Code-Snippet in die Datei functions.php Ihres aktiven Parent- oder Child-Themes ein. Referenzlink: goldenoakwebdesign.com/blog/…

    – Arunprasanth M

    17. November 2020 um 10:20 Uhr


  • Sobald Sie den obigen Code eingefügt haben. Gehen Sie zu Einstellungen –> Permalinks und klicken Sie auf Änderungen speichern.

    – Arunprasanth M

    17. November 2020 um 10:23 Uhr

  • Fügen Sie das obige Code-Snippet in die Datei functions.php Ihres aktiven Parent- oder Child-Themes ein. Referenzlink: goldenoakwebdesign.com/blog/…

    – Arunprasanth M

    17. November 2020 um 10:20 Uhr


  • Sobald Sie den obigen Code eingefügt haben. Gehen Sie zu Einstellungen –> Permalinks und klicken Sie auf Änderungen speichern.

    – Arunprasanth M

    17. November 2020 um 10:23 Uhr

1395290cookie-checkURL-Präfix für Beiträge WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy