web-dev-qa-db-fra.com

Ajouter! [CDATA] à permalien rss

dans la prochaine partie de l'ajout! [CDATA] à la balise de titre comme vous pouvez le voir par le lien ci-dessous

WordPress Ajouter [cdata] à la balise de titre dans le flux rss

j'essaie maintenant d'ajouter! [CDATA] à la balise link en utilisant the_permalink_rss. C'est le code que j'ai jusqu'à présent:

//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 . ']]>';

Et ceci est la sortie <link>http://![CDATA[]]</link>quand il devrait être

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

Qu'est-ce que j'oublie ici?

1
Panos

Le problemn et sa solution est très similaire à la autre question . Vous utilisez get_post_type_archive_link() incorrectement. Cette fonction accepte un seul paramètre. Il s'agit de l'identificateur de type de publication pour ce que vous souhaitez obtenir le lien d'archive. Je suis presque sûr que get_query_var('job_listing') ne renvoie pas d'identificateur de type de publication.

Par exemple, si le type de publication est job_listing, l'utilisation de get_post_type_archive_link() devrait être:

$permalink = get_post_type_archive_link( 'job_listing' );

Notez que get_post_type_archive_link() renvoie false si le type de publication est enregistré avec 'has_archive' => false ou, ce qu’est votre cse, si l’identificateur de type de publication n’est pas valide.

Tenez également compte du fait que la valeur renvoyée par le filtre the_permalink_rss est échappée à l'aide de esc_url(), comme vous pouvez le constater dans le code source de the_permalink_rss() funciton , Il est donc probable que vous ne puissiez pas obtenir le résultat souhaité car, je pense, cette fonction tente d’échapper à une URL valide, mais une chaîne commençant par <!CDATA n’est pas une URL valide. Vous pouvez effectuer ce test simple pour voir ce que je veux dire:

$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