Je souhaite que mes utilisateurs envoient des liens vers mon site Web, par exemple reddit et digg. J'ai ajouté une méta_key 'syndication_permalink' qui contient un lien vers ce message. Comment puis-je changer le post permalien pour lier ce lien personnalisé pas à ma page?
Filtrez post_link
(ou post_type_link
pour les types de publication personnalisés), récupérez et validez la méta valeur de la publication, puis renvoyez-la à la place du lien d'origine.
En tant que plugin:
<?php
/**
* Plugin Name: External Permalinks
* Plugin URI: http://wordpress.stackexchange.com/q/64285/73
* Description: Uses the value of post meta field <code>syndication_permalink</code> as permalink if available.
* Version: 2012.11.13
* Author: Fuxia Scholz
* Author URI: https://fuxia.me
* Licence: MIT
* License URI: http://opensource.org/licenses/MIT
*/
add_filter( 'post_link', 'wpse_64285_external_permalink', 10, 2 );
/**
* Parse post link and replace it with meta value.
*
* @wp-hook post_link
* @param string $link
* @param object $post
* @return string
*/
function wpse_64285_external_permalink( $link, $post )
{
$meta = get_post_meta( $post->ID, 'syndication_permalink', TRUE );
$url = esc_url( filter_var( $meta, FILTER_VALIDATE_URL ) );
return $url ? $url : $link;
}
Exemple de saisie: