it-swarm.com.de

Füge! [CDATA] zum Permalink-RSS hinzu

im nächsten Teil des Hinzufügens von! [CDATA] zum Titel-Tag, wie Sie unter dem folgenden Link sehen können

WordPress Füge [cdata] zum Titel-Tag im RSS-Feed hinzu

jetzt versuche ich,! [CDATA] mit the_permalink_rss zum Link-Tag hinzuzufügen. Dies ist der Code, den ich bisher habe:

//Add cdata to job permalink rss
add_filter( 'the_permalink_rss', 'add_cdata_to_permalink' );

function add_cdata_to_permalink ( $permalink) {
       $permalink = get_post_type_archive_link( get_query_var('job_listing') );
       return '<![CDATA[' . $permalink . ']]>';

Und dies ist der Ausgabe-<link>http://![CDATA[]]</link>, wann er sein sollte

<link><![CDATA[permalink]]></link>

Was vermisse ich hier?

1
Panos

Das Problem und seine Lösung ist der anderen Frage sehr ähnlich. Sie verwenden get_post_type_archive_link() falsch. Diese Funktion akzeptiert nur einen Parameter und ist die Beitragstyp-ID für das, was Sie den Archivlink erhalten möchten, und ich bin mir fast sicher, dass get_query_var('job_listing') keine Beitragstyp-ID zurückgibt .

Wenn der Beitragstyp beispielsweise job_listing ist, sollte die Verwendung von get_post_type_archive_link() wie folgt lauten:

$permalink = get_post_type_archive_link( 'job_listing' );

Beachten Sie, dass get_post_type_archive_link()false zurückgibt, wenn der Beitragstyp mit 'has_archive' => false registriert ist, oder, was es ist, Ihre cse, wenn die Beitragstyp-ID ungültig ist.

Berücksichtigen Sie außerdem, dass der vom the_permalink_rss-Filter zurückgegebene Wert mit esc_url() maskiert wird, wie Sie im Quellcode von the_permalink_rss() funciton sehen können. , Es ist also wahrscheinlich, dass Sie nicht das gewünschte Ergebnis erhalten können, da diese Funktion, glaube ich, versucht, eine gültige URL zu umgehen, aber eine Zeichenfolge, die mit <!CDATA beginnt, ist keine gültige URL. Sie können diesen einfachen Test durchführen, um zu sehen, was ich meine:

$test = '<![CDATA[ https://example.com/some-post ]]>';
// Outputs string(0) ""
var_dump( esc_url( $test ) );

$test = 'https://example.com/some-post';
string(29) "https://example.com/some-post"
var_dump( esc_url( $test ) );
2
cybmeta