Was ist der Unterschied zwischen get_post_permalink und get_permalink?

11

Ich habe die Dokumentation zu lesen auf get_post_permalink()und get_permalink()und nicht verstehen den Unterschied zwischen den beiden. Es könnte sein, dass ich den Zweck der Parameter $leavenameund nicht verstehe $sample. Kann jemand diese erklären und wann eine Funktion nützlicher wäre als die andere? Vielen Dank!

Michelle
quelle

Antworten:

6

Die get_post_permalink()funciton holt den Link zu einem Beitrag in Abhängigkeit von seinem „permanent“ Link plus Ihren benutzerdefinierten Regeln neu schreiben , dass Änderungen ?p=123in für zB my-beautiful-sunday-diary. Die get_permalink()Funktion ist "grundlegender", aber auch vielseitiger in dem, was sie tut: Für eine post_typevon

  • page, es benutzt get_page_link()
  • attachment, es benutzt get_attachment_link()
  • post, es benutzt get_post_link()

Es behandelt auch die Anzeige von terms like- categoryund Datumspermalinks. Am Ende ersetzt es entweder den "hübschen" Link in Ihrem home_url()oder gibt nur den unformatierten Link zurück, wenn keine benutzerdefinierten Umschreiberegeln zugewiesen wurden. Schließlich wird ein generischer Filter angehängt:

/**
 * Filters the permalink for a post.
 *
 * Only applies to posts with post_type of 'post'.
 *
 * @since 1.5.0
 *
 * @param string  $permalink The post's permalink.
 * @param WP_Post $post      The post in question.
 * @param bool    $leavename Whether to keep the post name.
 */
return apply_filters( 'post_link', $permalink, $post, $leavename );

Hoffe das klärt das Thema.

Protip: Wenn Sie Änderungen peramlinks in einem Plugin benötigen, gehen Sie mit den spezifischen Filter innen get_attachment_link(), get_post_link()etc. Nur wenn Sie entweder an einem einzigen Standort arbeiten und planen nicht , Ihren Code zu verteilen oder wenn Sie ein Plugin schreiben Targeting nur umschreiben Zeug, dann gehen Sie mit dem generischen Filter oben. Andernfalls werden Sie die Bemühungen aller Themenautoren zunichte machen und ein Rückruf-Prioritätsrennen starten.

Kaiser
quelle
2

Jemand anderes wird es sicherlich besser erklären als ich. Da benutze ich nurget_permalink()

Sie sind meist ähnlich , wie sie beide Rückkehr der Post permalink, get_permalinkVerwendung get_post_permalink(für post_types) und Filter sein kann. Es wird auch verwendet, um einen Seitenlink, einen Anhang ... abzurufen, der get_post_permalinkanscheinend post_types gewidmet ist.

BEARBEITEN:

In Bezug auf die Verwendung von $leavenamesieht es so aus, als ob keine Verwendung im Front-End (und sogar im Back-End) erforderlich ist, da der Permastruktur-Slug entsprechend dem Post-Typ des Links zurückgegeben wird.

 echo get_permalink(123, true);

Geben Sie das Umschreibungsschema für den Link zurück, der verwendet werden könnte

Ein Eintrag:

 http://example.com/%postname%/

Ein Produkt:

 http://example.com/%product%/

$ leavename wird im get_permalink () im $ rewritecode-Array verwendet und als erster Parameter in die Funktionszeile 221 eingefügt

$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );

Es kann nützlich sein, die Umschreibeschnecke für einen Link für einen Entwickler zu entdecken (aber ich denke, es gibt einen besseren Weg, dies zu tun).

Hoffe, jemand wird mehr Details geben.

Benoti
quelle
Vielen Dank! Da bin ich mir aber immer noch nicht ganz sicher. Haben Sie jemals $ leavename verwendet, um die Permalink-Struktur zu ändern? Warum und wie würde man das machen? Und meinst du damit, dass get_post_permalink () zum Abrufen von Archiven verwendet wird, oder verweisen Sie dort auf get_permalink ()? Ich habe get_post_permalink () noch nie verwendet, bis ich heute darauf gestoßen bin, dass es genau wie get_permalink () verwendet wird, daher bin ich mir des Unterschieds nicht klar.
Michelle
Ich spreche von get_permalink, Sie haben es in der Quelle, es ruft Autorenseite, Kategorien usw. ab. Es wird mehr als get_post_permalink. Get_permalink ist eine Vorlagenfunktion, wenn ich mich nicht irre, und sie ist leistungsstark.
Benoti
Verstanden, ich bekomme einfach nicht, wann wir jemals get_post_permalink () brauchen oder wollen würden - können Sie ein Codebeispiel geben? Und wissen Sie, was $ leavename und $ sample tun? Ich habe auch immer nur get_permalink () verwendet :-)
Michelle
2
$leavenamewird in admin verwendet, um die Permalink-Struktur abzurufen, damit die Schnittstelle generiert werden kann, über die Sie den Slug eines Posts bearbeiten können.
Milo