다음과 같은 방법으로 링크 URL을 숨기려고합니다. 배열에 URL을 저장 한 다음 $ _GET 배열의 매개 변수를 감지하면 저장된 URL로 리디렉션합니다.WordPress Plugin의 URL Cloaking
<?
/* 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;
}
}
이 방법으로 예상 할 수있는 문제가 있습니다. 링크 수가 날마다 증가하므로 저장된 데이터는 어느 정도 도달하면 삭제해야합니다. 그러나 방문자가 웹 페이지를 로컬 드라이브에 저장하고 나중에 내용을 읽은 다음 링크를 클릭하면 서버가 URL을 저장하지 않으면이 시점에서 리디렉션되지 않습니다.
나는 여기에 설명 된 것과 거의 같은 문제라고 생각합니다. Looking for more efficient way to serve numerous link redirects?하지만 분산 플러그인의 경우 .htaccess 파일을 편집하는 것이 현실적입니까/실용적입니까? 모든 사용자가 .htaccess를 수정할 수있는 올바른 액세스 권한을 갖고있는 것은 아닙니다. 나는 잘 모르겠다.
누군가 올바른 방향으로 나를 안내 할 수 있는지 궁금합니다.
아, 아주 영리합니다. 첫눈에 당신이 의미하는 바를 얻지 못했지만 이제는 얻었습니다. 귀하의 통찰력에 감사드립니다. – Teno
Nice, [Cloaking Plugin] (http://www.profitwp.net/profit-redirect/)에서 사용 된 것과 동일한 방법입니다. – jcarlosweb