SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【WordPress】今プレビュー中であることをJavascript側で取得したい

問題

・GoogleAnalyticsを使っていますが、下書き中の操作など解析したくないです。

・下書き中は、ソーシャル系ボタンは表示しなくていいです。

プレビュー中かどうか取得できれば、Javascript側で何とかするんだけど。

wordpressでプレビュー


答え

プレビューだと、以下のように、URLに preview=true が付いてくる。

https://www.softel.co.jp/blogs/tech/?p=3401&preview=true
https://www.softel.co.jp/blogs/tech/archives/3401?preview=true&preview_id=3401&preview_nonce=1366dd1d4a

クエリ文字列は window.location.search で取得できる。

preview=true の位置が、予約投稿時のプレビュー、下書き時のプレビューなどで一定しないので、以下で判断してみた。

if (!/(\?|&)preview=true($|&)/.test(window.location.search)) {
    //プレビュー中ではないときの処理
}
if (/(\?|&)preview=true($|&)/.test(window.location.search)) {
    //プレビュー中の処理
}

簡易版

引数が ?pppreview=trueee のような場合でもプレビュー中だと判断してしまうが、それで問題なければ。

if (window.location.search.indexOf('preview=true') != -1) {
    //プレビュー中ではないときの処理
}

関連するメモ

コメント