WordPress 4.9でコアから分離された「Press This」プラグイン。久しぶりに使おうとしたら、ツール画面から取得したブックマークレットが動作しない…という問題に遭遇しました。
この記事では、Press Thisを2025年のWordPress環境で動作させる方法と、WEBブックマーク向けにカスタマイズする手順を解説します。
Press Thisとは?
Press Thisは、ブラウザで閲覧中のWebページをワンクリックでWordPressに投稿できるブックマークレット機能です。
以下のような作業を効率化できます。
- 閲覧中のページタイトルを自動取得
- 選択したテキストを引用として取り込み
- meta descriptionの取得
- 素早い下書き作成
問題:ツール画面のブックマークレットが動作しない
Press Thisプラグインをインストールし、「ツール → 利用可能なツール」からブックマークレットを取得。しかし、実際に使ってみるとWordPressのトップページにリダイレクトされてしまい、Press This画面が開かないという問題が発生しました。
原因
ツール画面で提供されるブックマークレットはPOSTメソッドでフォームを送信する仕組みですが、最近のブラウザのセキュリティ強化やサーバー設定によってブロックされるケースがあります。
解決策:GETパラメータ方式のブックマークレットを使用
POSTではなくGETパラメータでデータを渡すシンプルなブックマークレットに置き換えることで解決しました。
javascript:(function(){var s='';if(window.getSelection){s=window.getSelection().toString();}else if(document.selection){s=document.selection.createRange().text;}var m=document.querySelector('meta[name="description"]')||document.querySelector('meta[property="og:description"]');var d=m?m.getAttribute('content'):'';var text=s||d;window.open('https://example.com/wp-admin/press-this.php?v=8&u='+encodeURIComponent(location.href)+'&t='+encodeURIComponent(document.title)+'&s='+encodeURIComponent(text.substring(0,512)),'_press_this_app','width=960,height=600,resizable=1,scrollbars=1');})();
※ https://example.com/ の部分は自分のサイトURLに変更してください。
このブックマークレットの特徴は以下の通りです。
- テキストを選択している場合はその内容を取得
- 選択がない場合はmeta descriptionを自動取得
- og:descriptionにも対応
カスタマイズ:サムネイル画像とURLを自動挿入
Press Thisの基本機能に加えて、以下のカスタマイズを実装しました。
- サイトのスクリーンショット画像を自動挿入
- クリーンなURLリンクを追加
- 特定カテゴリーをデフォルト選択
- 出力順序のカスタマイズ
functions.php に追加するコード
<?php
/**
* Press This(ブックマーク)のカスタマイズ
*
* 機能:
* - サイトURLとスクリーンショット画像を自動挿入
* - カテゴリー「WEBギャラリー」をデフォルト選択
* - 出力順: スクリーンショット → description(blockquote) → サイトURL
*/
/* Press This(ブックマーク)のカスタマイズ */
//メディア自動検出を無効化(不要な画像取り込みを防ぐ)
add_filter('enable_press_this_media_discovery', '__return_false');
//Press This 保存時のカスタマイズ
add_filter('press_this_save_post', 'custom_press_this_save_post', 10, 1);
function custom_press_this_save_post($post_data) {
//元のURLを取得
$source_url = isset($_REQUEST['u']) ? esc_url_raw($_REQUEST['u']) : '';
if (empty($source_url)) {
//フォールバック: 本文からURLを抽出
$content = trim($post_data['post_content']);
$pattern = '(https?://[-_.!~*\'()a-zA-Z0-9;/?:@&=+$,%#]+)';
if (preg_match($pattern, $content, $match)) {
$source_url = $match[0];
}
}
if (empty($source_url)) {
return $post_data;
}
//コンテンツを取得
$content = $post_data['post_content'];
//デフォルトの「情報源:」表示を削除
$content = preg_replace('/<p>情報源:.*<em>.*?<\/em><\/p>/i', '', $content);
$content = trim($content);
//blockquote を抽出(Press Thisが自動で追加したもの)
$blockquote = '';
if (preg_match('/<blockquote>.*?<\/blockquote>/s', $content, $bq_match)) {
$blockquote = $bq_match[0];
//元のコンテンツからblockquoteを削除
$content = preg_replace('/<blockquote>.*?<\/blockquote>/s', '', $content);
$content = trim($content);
}
//クエリパラメータを削除してクリーンなURLを取得
$parsed = parse_url($source_url);
$clean_url = $parsed['scheme'] . '://' . $parsed['host'] . ($parsed['path'] ?? '/');
//HTMLを組み立て(順番: スクリーンショット → blockquote → サイトURL)
$html = '';
//1. サムネイル画像(16:9比率、幅1200px)
$thumbnail_url = 'https://s.wordpress.com/mshots/v1/' . rawurlencode($clean_url) . '?w=1200&h=675';
$html .= '<a class="url-thumbnail" href="' . esc_url($clean_url) . '" target="_blank" rel="noopener"><img src="' . esc_url($thumbnail_url) . '" alt="' . esc_attr($post_data['post_title']) . '" class="lazy"></a>' . "\n";
//2. blockquote(description)
if (!empty($blockquote)) {
$html .= $blockquote . "\n";
}
//3. サイトURLリンク
$html .= '<p class="ta-right"><cite>サイトURL:<a class="link fz-sm" href="' . esc_url($clean_url) . '" target="_blank" rel="noopener">' . esc_html($clean_url) . '</a></cite></p>';
//コンテンツを組み立て(残りのコンテンツがあれば先頭に)
if (!empty($content)) {
$post_data['post_content'] = $content . "\n" . $html;
} else {
$post_data['post_content'] = $html;
}
//特定のカテゴリー(ID=9)をデフォルト設定
if (empty($post_data['post_category']) || $post_data['post_category'] === array(1)) {
$post_data['post_category'] = array(9);
}
return $post_data;
}
コードの解説
1. enable_press_this_media_discovery フィルター
add_filter('enable_press_this_media_discovery', '__return_false');
Press Thisはデフォルトで対象サイトから画像を自動取得しようとします。これを無効化することで、不要な画像の取り込みを防ぎます。
2. press_this_save_post フィルター
投稿データが保存される直前に呼び出されるフィルターです。$post_data 配列には以下の情報が含まれています。
post_title- 投稿タイトルpost_content- 本文post_category- カテゴリーpost_status- 投稿ステータス
3. WordPress.com mshots API
$thumbnail_url = 'https://s.wordpress.com/mshots/v1/' . rawurlencode($clean_url) . '?w=1200&h=675';
WordPress.comが提供する無料のスクリーンショットAPIを利用しています。パラメータで画像サイズを指定でき、今回は16:9比率(1200×675px)に設定しました。
出力結果
カスタマイズ後、Press Thisで投稿すると以下のようなHTMLが生成されます。
<a class="url-thumbnail" href="https://example-site.com/" target="_blank" rel="noopener">
<img src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fexample-site.com%2F?w=1200&h=675" alt="サイトタイトル" class="lazy">
</a>
<blockquote>サイトのmeta descriptionがここに入ります。</blockquote>
<p class="ta-right"><cite>サイトURL:<a class="link fz-sm" href="https://example-site.com/" target="_blank" rel="noopener">https://example-site.com/</a></cite></p>
まとめ
Press Thisは地味ながら非常に便利な機能です。
今回の対応ポイントをまとめると以下の通りです。
- ブックマークレットの問題 - POSTからGET方式に変更して解決
- meta description対応 - ブックマークレットでog:descriptionも取得
- サムネイル自動挿入 - WordPress.com mshots APIを活用
- 出力順序のカスタマイズ - press_this_save_postフィルターで制御
- デフォルトカテゴリー設定 - 特定カテゴリーを自動選択
参考
この記事のカスタマイズは、以下の記事を参考にさせていただきました。

