下記のソースコードをfunctions.php内に記述してリロードしてください。
投稿記事や固定ページの編集画面横にリダイレクトのボックスが表示されるはずです。
ボックス内にリダイレクト先のURLを記述することで、このページにアクセスすると指定先へリダイレクトされます。
<?php
///////////////////////////////////////
// カスタムボックスの追加
///////////////////////////////////////
add_action('admin_menu', 'add_redirect_custom_box');
if (!function_exists('add_redirect_custom_box')) :
function add_redirect_custom_box()
{
//リダイレクト
add_meta_box('singular_redirect_settings', 'リダイレクト', 'redirect_custom_box_view', 'post', 'side');
add_meta_box('singular_redirect_settings', 'リダイレクト', 'redirect_custom_box_view', 'page', 'side');
}
endif;
///////////////////////////////////////
// リダイレクト
///////////////////////////////////////
if (!function_exists('redirect_custom_box_view')) :
function redirect_custom_box_view()
{
$redirect_url = get_post_meta(get_the_ID(), 'redirect_url', true);
echo '<label for="redirect_url">リダイレクトURL</label>';
echo '<input type="text" name="redirect_url" size="20" value="' . esc_attr(stripslashes_deep(strip_tags($redirect_url))) . '" placeholder="https://" style="width: 100%;">';
echo '<p class="howto">このページに訪れるユーザーを設定したURLに301リダイレクトします。</p>';
}
endif;
add_action('save_post', 'redirect_custom_box_save_data');
if (!function_exists('redirect_custom_box_save_data')) :
function redirect_custom_box_save_data()
{
$id = get_the_ID();
// リダイレクトURL
if (isset($_POST['redirect_url'])) {
$redirect_url = $_POST['redirect_url'];
$redirect_url_key = 'redirect_url';
add_post_meta($id, $redirect_url_key, $redirect_url, true);
update_post_meta($id, $redirect_url_key, $redirect_url);
}
}
endif;
// 設定されたリダイレクト先のURLを取得
if (!function_exists('get_singular_redirect_url')) :
function get_singular_redirect_url()
{
return trim(get_post_meta(get_the_ID(), 'redirect_url', true));
}
endif;
// リダイレクトの処理
if (!function_exists('redirect_to_url')) :
function redirect_to_url($url)
{
header("HTTP/1.1 301 Moved Permanently");
header("location: " . $url);
exit;
}
endif;
// URLの正規表現に対応
define('URL_REG_STR', '(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)');
define('URL_REG', '/' . URL_REG_STR . '/');
// リダイレクト
add_action('wp', 'wp_singular_page_redirect', 0);
if (!function_exists('wp_singular_page_redirect')) :
function wp_singular_page_redirect()
{
//リダイレクト
if (is_singular() && $redirect_url = get_singular_redirect_url()) {
//URL形式にマッチする場合
if (preg_match(URL_REG, $redirect_url)) {
redirect_to_url($redirect_url);
}
}
}
endif;
コメント