WordPressの記事編集画面にリダイレクトボックスを設置する

下記のソースコードを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;

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次