フォノクラフト株式会社:作業メモや備忘録など

作業メモや備忘録など…

[WP] [Ktai Style] “ページ”作成時に画像がリンクになるのを修正する

without comments

用途

wordpressの「ページ」機能を使ったページでは<img>タグが<a>タグに変換されてしまうので、直に<img>タグを使える様に簡易的にカスタムする

デフォルト仕様

<img src="○○○○.jpg" alt="画像"> と入力すると
↓
[□<a href="○○○○.jpg">画像</a>] と変換される(□はアイコン)

カスタム後の仕様

<img src="○○○○.jpg" alt="画像"> と入力しても
↓
<img src="○○○○.jpg" alt="画像"> のまま変換されないように

ソース

/wp-content/plugins/ktai-style/inc/shrinkage.php

604行目付近

if ( defined('KTAI_SHRINKAGE_DEBUG') && KTAI_SHRINKAGE_DEBUG && is_ks_error($thumb_path)) {
	$replace = '[[' . $thumb_path->getMessage() . ']]';
} elseif ($this->image_inline && $thumb_url) {
	$replace = $this->image_element($thumb_url, $alt, $attr) 
	. (preg_match('/has_orig="true"/', $attr_str) ? '[' : '');
	$has_image = true;
} else {
	$replace = '[<img localsrc="94" alt="' . __('IMAGE:', 'ktai_style') . '" />';
	if (! $path) { // link to a image of external sites
		$replace .= $this->link_element($src, $alt, $attr);
	} elseif (! is_dir($path) && $size = @filesize($path) && $size <= $this->base->get('cache_size')) { // link to the image
		$replace .= $this->link_element($src, $alt, $attr);
		$has_image = ! is_ks_error($thumb_path);
	} elseif ($thumb_path && $thumb_url) { // link to a thumbnail
		$replace .= $this->link_element($thumb_url, $alt, $attr);
		$has_image = ! is_ks_error($thumb_path);
	} else { // no link to images
		$replace .= '<font color="' . self::SIZE_EXCEED_COLOR . '">' . $alt . '</font>';
	}
	$replace .= preg_match('/has_orig="true"/', $attr_str) ? ' | ' : ']';
}
if ( defined('KTAI_SHRINKAGE_DEBUG') && KTAI_SHRINKAGE_DEBUG && is_ks_error($thumb_path)) {
	$replace = '[[' . $thumb_path->getMessage() . ']]';
} elseif ($this->image_inline && $thumb_url) {
	$replace = $this->image_element($thumb_url, $alt, $attr) 
	. (preg_match('/has_orig="true"/', $attr_str) ? '[' : '');
	$has_image = true;
} else {
	//$replace = '[<img localsrc="94" alt="' . __('IMAGE:', 'ktai_style') . '" />';
	$replace = '';// ← <img>の要素をまるごと消す
	if (! $path) { // link to a image of external sites
		$replace .= $this->link_element($src, $alt, $attr);
	} elseif (! is_dir($path) && $size = @filesize($path) && $size <= $this->base->get('cache_size')) { // link to the image
		$replace .= $this->link_element($src, $alt, $attr);
		$has_image = ! is_ks_error($thumb_path);
	} elseif ($thumb_path && $thumb_url) { // link to a thumbnail
		$replace .= $this->link_element($thumb_url, $alt, $attr);
		$has_image = ! is_ks_error($thumb_path);
	} else { // no link to images
		$replace .= '<font color="' . self::SIZE_EXCEED_COLOR . '">' . $alt . '</font>';
	}
	//$replace .= preg_match('/has_orig="true"/', $attr_str) ? ' | ' : ']';
	$replace .= preg_match('/has_orig="true"/', $attr_str) ? ' | ' : '';//←「]」を消す
}

640行目付近

private function link_element($href, $anchor, $attr) {
	$html = sprintf('<a href="%s"%s%s>%s</a>', 
		$href, 
		(isset($attr['class']) ? ' class="' . $attr['class'] . '"' : ''),
		(isset($attr['style']) ? ' style="' . $attr['style'] . '"' : ''),
		$anchor);
	return $html;
}
private function link_element($href, $anchor, $attr) {
	//$html = sprintf('<a href="%s"%s%s>%s</a>', 
	$html = sprintf('<img src="%s"%s%s alt="%s">', 
		$href, 
		(isset($attr['class']) ? ' class="' . $attr['class'] . '"' : ''),
		(isset($attr['style']) ? ' style="' . $attr['style'] . '"' : ''),
		$anchor);
	return $html;
}

備考

投稿欄からのエントリーについては未検証です。

パケットの問題があるので、特定の用途でない限り全くオススメできません。