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?
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 ) );