私のユーザーに私のウェブサイトへのリンクをredditやdiggのようなものにさせたいです。この投稿へのリンクを含むmeta_key 'syndication_permalink'を追加しました。このカスタムリンクを自分のページにリンクしないように、投稿のパーマリンクを変更するにはどうすればよいですか。
post_link
(またはカスタム投稿タイプの場合はpost_type_link
)をフィルタリングし、投稿のメタ値を取得して検証し、元のリンクの代わりにそれを返します。
プラグインとして:
<?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;
}
サンプル入力: