<?php
/*
Plugin Name: YUNA Anchor Jump Shifter
Plugin URI: http://www.churaumi.tv/plugin
Description: position: fixed のページに <a href="#"> でジャンプ先した時にページをずらす
Author: Shimpei Azuma
Version: 0.1
Author URI: http://www.churaumi.tv
*/
$yajs = new CCCL098_ANCHORJUMPSHIFT_WPPL();
class CCCL098_ANCHORJUMPSHIFT_WPPL
{
private $anClass = 'ancShift'; //<- 将来使い予定のaタグ用CSSクラス名
private $shiftPx = 180; // <- ずらしたいピクセル数
public function __construct()
{
/* 有効にした時に引数で指定したファンクションを実行 */
if (function_exists('register_activation_hook'))
{
register_activation_hook(__FILE__, array(&$this, 'activation'));
}
/* 停止した時に引数で指定したファンクションを実行 */
if (function_exists('register_deactivation_hook'))
{
register_deactivation_hook(__FILE__, array(&$this, 'deactivation'));
}
/* アンインストールした時に引数で指定したファンクションを実行 */
if (function_exists('register_uninstall_hook'))
{
register_uninstall_hook(__FILE__, 'CCCL098_ANCHORJUMPSHIFT_uninstall' );
}
add_shortcode('cp_h1a_cp', array(&$this, 'h1a'));
add_shortcode('cp_h2a_cp', array(&$this, 'h2a'));
add_shortcode('cp_h3a_cp', array(&$this, 'h3a'));
add_shortcode('cp_h4a_cp', array(&$this, 'h4a'));
add_shortcode('cp_h5a_cp', array(&$this, 'h5a'));
add_shortcode('cp_h6a_cp', array(&$this, 'h6a'));
add_filter('the_content', array(&$this, 'shortcode_empty_paragraph_fix'));
}
function activation() {
/* 有効にした時の処理 */
}
function deactivation() {
/* 停止にした時の処理 */
}
function h1a($atts, $content = '') {
$sca = $this->parse_scatts($atts);
return $this->html_sc('h1',$sca,$content);
}
function h2a($atts, $content = '') {
$sca = $this->parse_scatts($atts);
return $this->html_sc('h2',$sca,$content);
}
function h3a($atts, $content = '') {
$sca = $this->parse_scatts($atts);
return $this->html_sc('h3',$sca,$content);
}
function h4a($atts, $content = '') {
$sca = $this->parse_scatts($atts);
return $this->html_sc('h4',$sca,$content);
}
function h5a($atts, $content = '') {
$sca = $this->parse_scatts($atts);
return $this->html_sc('h5',$sca,$content);
}
function h6a($atts, $content = '') {
$sca = $this->parse_scatts($atts);
return $this->html_sc('h6',$sca,$content);
}
function parse_scatts($atts) {
$scatts = shortcode_atts(array(
'id' => '',
'class' => '',
), $atts);
$arr['aId'] = '';
if ($scatts['id'] != '') $arr['aId'] = ' id="'.$scatts['id'].'"';
$arr['hClass'] = '';
if ($scatts['class'] != '') $arr['hClass'] = ' class="'.$scatts['class'].'"';
$arr['aClass'] = ' style="padding-top: '.$this->shiftPx.'px; margin-top: -'.$this->shiftPx.'px;"';
return $arr;
}
function html_sc($tag,$sca,$cont) {
return '<'.$tag.$sca['hClass'].'><a'.$sca['aId'].$sca['aClass'].'></a>'.$cont.'</'.$tag.'>';
}
function shortcode_empty_paragraph_fix($content) {
$array = array (
'<p>[cp_h' => '[cp_h',
'a_cp]</p>' => 'a_cp]',
'a_cp]<br />' => 'a_cp]'
);
$content = strtr($content, $array);
return $content;
}
}
function CCCL098_ANCHORJUMPSHIFT_uninstall() {
/* アンインストールにした時の処理 */
}
?>
コメント