WP-OGPプラグインの日本語(マルチバイト文字)対応

WordPressでOGP対応をしようと思いWP-OGPプラグインをインストールしてみたものの

日本語(マルチバイト文字)は考慮されていなかったので調整しました。

ベースは、バージョン1.0.5です。

@@ -48,7 +48,7 @@
function get_the_post_thumbnail_src($img)
{
-  return (preg_match('~\bsrc="([^"]++)"~', $img, $matches)) ? $matches[1] : '';
+  return (preg_match('/\bsrc="([^"]++)"/ui', $img, $matches)) ? $matches[1] : '';
}
function wpogp_plugin_menu() {
@@ -196,22 +196,10 @@
} else {
$text = $post->post_content;
}
-		$text = str_replace(array("\r\n", "\r", "\n", "  "), " ", $text);
-		$text = str_replace(array("\""), "", $text);
+		$text = preg_replace("/ ?| |\n|\r|\r\n|\"/u", "", $text);
$text = trim(strip_tags($text));
-		$text = explode(' ', $text);
-		if(count($text) > $post_desc_length) {
-			$l = $post_desc_length;
-			$ellipsis = '...';
-		} else {
-			$l = count($text);
-			$ellipsis = '';
-		}
-		$description = '';
-		for ($i=0; $i<$l; $i++)
-			$description .= $text[$i] . ' ';
-
-		$description .= $ellipsis;
+		$text = mb_strimwidth($text, 0, $post_desc_length * 3, '...', 'utf-8');
+		$description = $text;
} elseif(is_category()) {
$category = $wp_query->get_queried_object();
$description = trim(strip_tags($category->category_description));

ちなみに、charsetはUTF-8じゃないといけません。

極力、元のソースを弄らずに対応したかったので、ちょっと強引なところもあります。

WP-OGPプラグインの挙動が気になる方は、調整してみてはいかがでしょう?

コメントは受け付けていません。