WordPressのバージョン3.5からリンク管理の機能が無効化され、現在は管理パネルに「リンク」のメニューが表示されなくなっている。ただ、実際にはリンク管理の機能がなくなっているわけではなく、WordPressのデフォルトインストール時に、データベースにはしっかりwp_linksのテーブルが作られていて、有効化することでいつでも利用できるようになっている。そして、バージョン3.5以降のWordPressでリンク管理を有効化するためには、公式サイトで公開されている「Link Manager」というプラグインをインストールすることが勧められている(プラグインを有効化すると、下図のように管理パネルに「リンク」メニューが表示される)。

enter image description here

でも、別にこの「Link Manager」プラグインをインストールしなくても、テーマやテンプレート側で有効化することが可能なのだ。実のところ「Link Manager」プラグインの中身もWordPressのテンプレート関数をコールしてリンク管理を有効化しているだけだ(下記ソース参照)。

plugins/link-manager/link-manager.php

<?php
/* Plugin Name: Link Manager
 * Description: Enables the Link Manager that existed in WordPress until version 3.5.
 * Author: WordPress
 * Version: 0.1-beta
 */

/*
 * See http://core.trac.wordpress.org/ticket/21307
 */

add_filter( 'pre_option_link_manager_enabled', '__return_true' );

たったこれだけ(add_filterの一行だけ)の処理にプラグインをインストールするのはあまりにも大げさだと思ってしまうのはオレだけだろうか。WordPressでは、ページ表示時に有効化されているプラグインの数だけ読み込み処理が発生して、その分PHPのメモリーが消費される。つまるところサイト全体のパフォーマンス低下にも繋がって来るんじゃないか…と。オレとしては、できることなら実態が単純な処理で、テーマ側の処理などに含んでしまった方が効率的だと思うようなプラグインは、極力インストールしたくない。
ということで、リンク管理の有効化は、テーマ側のfunction.phpなどに設定を追記する対応がベストだと思った次第だ。

themes/<利用しているテーマ名>/function.php

// enabled link manager
add_filter( 'pre_option_link_manager_enabled', '__return_true' );

上のように、テーマのファイルに直接add_filter書いちゃうのがどう考えても良いのではないだろうか。これだけだと面白みがないので、もうちょっと使い勝手良く、管理パネルの表示設定でリンク管理をON/OFFできるようにしてみた。

themes/<利用しているテーマ名>/function.php

/*
 * add custom options fields for theme
 */
function add_theme_section_into_reading() {
    add_settings_section( 'theme', __('Theme settings'), 'theme_section_description', 'reading' );
    add_settings_field( 'custom_enable_link_manager', __('enable link manager'), 'enable_link_manager', 'reading', 'theme', array( 'label_for' => 'custom_enable_link_manager' ) );
    register_setting( 'reading', 'custom_enable_link_manager', 'intval' );
}
function theme_section_description() {
    printf('<p>%s</p>', __('It is possible to perform various settings of the theme that is currently used.'));
}
function enable_link_manager($args) {
    $enable_link_manager = get_option('custom_enable_link_manager', false);
    printf('<input type="checkbox" name="%senable_link_manager" id="%senable_link_manager" value="1" %s />%s', 'custom_', 'custom_', checked(1, $enable_link_manager, false), __('Do you want to use the link manager?'));
}
// enable link manager option
if (get_option('custom_enable_link_manager', false)) {
    add_filter( 'pre_option_link_manager_enabled', '__return_true' );
}

これで、管理パネルの「設定」メニューの「表示設定」に下図のようなオプションメニューが追加され、いつでもリンク管理のON/OFFを切り替えられる。

enter image description here

──ぶっちゃけ、DBのテーブル潰さないのなら、WordPressの公式ディストリビューションで、リンク管理のON/OFFを管理パネルで行えるようにしてくれたらいいのになぁ…とか思ったり。