次の方法でリンクURLをわかりにくくする予定です。URLを配列に格納し、$ _ GET配列でパラメーターを検出すると、保存されたURLにリダイレクトします。
<?
/* Plugin Name: Sample Link Cloak */
add_action('admin_menu', 'sample_link_cloak');
function sample_link_cloak() {
add_options_page(
'Sample Link Cloak',
'Sample Link Cloak',
'manage_options',
'sample_link_cloak',
'sample_link_cloak_admin');
}
function sample_link_cloak_admin() {
?>
<div class="wrap">
<?php
$links = '<p><a href="http://www.google.com">google.com</a></p>' . PHP_EOL
. '<p><a href="http://www.wordpress.org">wordpress.org</a></p>' . PHP_EOL
. '<p><a href="http://www.stackoverflow.com">stackoverflow.com</a></p>' . PHP_EOL;
$doc = new DOMDocument();
@$doc->loadHTML($links);
$array_urls = array();
foreach ($doc->getElementsByTagName('a') as $node) {
$url = $node->getAttribute('href');
$hash = md5($url);
$array_urls[$hash] = $url;
$url = site_url('?urlcloak=' . $hash);
$node->setAttribute('href', $url);
}
echo $doc->saveXML();
update_option('sample_urlcloak', $array_urls);
?>
</div>
<?php
}
add_action('init', 'cloakurls');
function cloakurls() {
if (isset($_GET['urlcloak'])) {
$array_urls = get_option('sample_urlcloak');
wp_redirect($array_urls[$_GET['urlcloak']]);
exit;
}
}
この方法で予測できる問題があります。リンクの数は日ごとに増えるため、ある程度到達したら、保存されているデータを削除する必要があります。ただし、訪問者がWebページをローカルドライブに保存し、後でコンテンツを読んでリンクをクリックした場合、この時点でサーバーがURLを保存していないと、リダイレクトされません。
ここで説明したのとほぼ同じ問題だと思います。多数のリンクリダイレクトを提供するためのより効率的な方法をお探しですか?しかし、分散プラグインの場合、.htaccessファイルを編集することは現実的/実用的ですか?すべてのユーザーが.htaccessを変更するための適切なアクセス権を持っているわけではないと思います。わからない。
誰かが私を正しい方向に導くことができるかどうか疑問に思っています。