web-dev-qa-db-fra.com

Changer le post-permalien en URL externe à partir du champ personnalisé

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?

1
Feras Odeh

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:

enter image description here

3
fuxia