Elido
1分で読了連携

WordPressでURLを短縮する4つの方法:ブランドリンクとトラッキング

プラグイン・Elido REST API・Zapier・手動の4つの方法で、WordPressにブランドショートリンクとクリックトラッキングを追加する方法

Marius Voß
DevRel · edge infra
WordPressの公開アクションがブランドのElidoショートリンクとクリックアナリティクスを生成するイメージ

WordPressのURLショートナーは、CMSが生成する長いパーマリンクを、オフサイトで共有できる短くてブランド付きのトラッキング可能なリンクに変換します。WordPressはコンテンツ公開に優れていますが、ニュースレター・ツイート・印刷チラシに貼ったリンクを何人がクリックしたかを教えてくれるようには設計されていません。そのギャップが、ショートナーを求める理由です。

詳細の前に短い要約をお伝えします。WordPressからリンクを短縮してトラッキングする理由は4つあります。汎用ドメインではなくサイトに合ったブランドソーシャル共有・何が実際にクリックされているかを把握するためのトラッキング済みアウトバウンドリンクとアフィリエイトリンク・後で変更できるリンクを指すプリントやパッケージ用QRコード・CMSが提供しないクリックアナリティクス。WordPressは記事が公開されたことを知っています。その中のリンクが火曜日にドイツから4,000クリックを得たことは知りません。

設定方法は4つあり、手間とコントロールのバランスが異なります。互換性のあるプラグインがあれば最も手間が少ない方法です。Elido REST APIは最も柔軟で、最終的にほとんどのチームが採用するパスです。Zapierはノーコードの橋渡しとして中間に位置します。そして手動で貼り付けることも常に可能です。この記事では各方法を解説してから、よくある間違い(パーマリンクとショートリンクの違い・壊れやすいリダイレクトプラグインの置き換え・サイトを遅くしないためのリダイレクトの置き場所)をカバーします。

WordPressのURLショートナーが実際に行うこと#

マーケティング的な表現をそぎ落とすと、ショートナーは2つのことをします。短いスラッグを長い遷移先にマッピングすること、そして誰かがそのスラッグをたどるたびにカウントすること。WordPressは、他の場所で共有するリンクについてどちらも行いません。

投稿にはすでにURLがあります。WordPressは各投稿にパーマリンクを生成し、通常は自分のドメイン上の読みやすいスラッグです。そのパーマリンクはサイトを読む人間向けです。文字数制限のあるプラットフォームで共有するために短くはなく、ブランド付きでもなく、リンクがページを離れた後に誰がクリックしたかのレコードもWordPressは持ちません。ショートリンクは別のオブジェクトです。リダイレクトドメイン上のコンパクトなURL(オプションで自分のブランドドメイン)で、遷移先に転送してクリックをログします。

この区別が重要なのは、両者が混同されやすいからです。パーマリンクとショートリンクは似ていて、どちらもどこかに繋がっています。でも、外に向けて共有され計測されるように作られているのは一方だけです。この点については後ほど戻ります。

手間とコントロールの軸でプロットしたWordPressとURLショートナーを接続する4つの方法:プラグイン(低手間・低コントロール)、Zapier(低手間・中コントロール)、REST API(高手間・フルコントロール)、手動貼り付け(セットアップなし・自動化なし)

方法1:WordPressプラグイン#

ほとんどの人が最初に探すのがプラグインの方法で、それには理由があります。WordPressプラグインディレクトリからプラグインをインストールし、APIトークンで接続すると、PHPの1行も書かずにショートリンクが表示されるようになります。

プラグインの可用性は変化するため、古いスクリーンショットを信じるよりも、パスの形を理解しておいてほしいという思いから、正直に現状をお伝えします。どのショートナープラグインも同じ一般的なパターンに従います。インストールして、リンクツールからワークスペーススコープのAPIトークンを貼り付けると、公開時またはエディターのボタンをクリックしたときにプラグインがショートナーのAPIを代わりに呼び出します。一部のプラグインは公開時にショートリンクを自動作成してカスタムフィールドに書き込みます。他のものはオンデマンドで生成するメタボックスを追加します。良いものはブランドドメインを選択してタグを追加できるため、リンクがアナリティクスの適切な場所に入ります。

メンテナンスされているElidoのWordPressプラグインがリストにあれば、ダッシュボードからインストールして/settings/apiのトークンで接続してください。ショートナーの現在のメンテナンスされているプラグインを確認できない場合は、無理に使わないでください。次のWordPressリリースで壊れる半放棄のプラグインは、自分でコントロールできるAPIの方法よりも悪いです。プラグインが合っているとき、それは最も手間のかからない選択肢です。合っていないときはAPIに進みましょう。

プラグインを信頼する前に確認すべき点が一つあります。リダイレクトはどこで行われるか、です。外部のショートナーにリンクを登録するだけのプラグインは問題ありません。ローカルリダイレクトハンドラーもインストールしてリンクを自分のWordPressサーバーで解決するプラグインは、後で詳しく説明する遅いパターンです。WordPressでリンクを作成してエッジで解決されるようにしたいのであって、PHPで解決させたいわけではありません。

方法2:Elido REST API#

これが最も複雑で最もコントロールできる方法で、すべての公開で自動的かつ確実にショートリンクを作成したくなったときにチームが採用するパスです。

WordPressは記事がステータスを変更するときにアクションを発火します。関連するのはtransition_post_statusで、記事がpublishへの移行を含む状態間を移動するたびに実行されます。それにハンドラーをフックして、Elido APIを呼び出して記事のパーマリンクのリンクを作成し、返ってきたショートURLをpost metaに保存して、テンプレート・エディター・共有ウィジェットでレンダリングできるようにします。WordPressプラグインハンドブックにフックシステムが記載されており、ブロックエディターにショートリンクを公開したい場合はWordPress REST APIリファレンスにメタエンドポイントが記載されています。

Elido側は3行です。以下は、記事が初めて公開されたときにブランドショートリンクを作成し、その後の編集ではスキップするPHPの公開ハンドラーです。

add_action( 'transition_post_status', 'elido_shorten_on_publish', 10, 3 );

function elido_shorten_on_publish( $new_status, $old_status, $post ) {
    if ( $new_status !== 'publish' || $old_status === 'publish' ) {
        return; // only on the first publish, not on every edit
    }
    if ( get_post_meta( $post->ID, '_elido_short_url', true ) ) {
        return; // already has one
    }

    $res = wp_remote_post( 'https://api.elido.app/v1/links', array(
        'headers' => array(
            'Authorization'   => 'Bearer ' . ELIDO_TOKEN,
            'Content-Type'    => 'application/json',
            'Idempotency-Key' => 'wp-post-' . $post->ID,
        ),
        'body'    => wp_json_encode( array(
            'destination_url' => get_permalink( $post ),
            'tags'            => array( 'wordpress', 'auto-publish' ),
        ) ),
    ) );

    if ( is_wp_error( $res ) ) {
        return; // log and move on; publish should never fail on this
    }

    $link = json_decode( wp_remote_retrieve_body( $res ), true );
    if ( ! empty( $link['short_url'] ) ) {
        update_post_meta( $post->ID, '_elido_short_url', $link['short_url'] );
    }
}

ここで2つの詳細が役割を果たしています。Idempotency-Keyは記事IDから導出されているため、公開フックが2回発火した場合(これは起こります)、重複ではなく同じリンクが返ってきます。そしてハンドラーは自分自身のエラーを飲み込みます。ショートリンクの作成は公開をブロックしてはなりません。API呼び出しが失敗しても、記事は公開されてリンクは後で作成できます。APIとSDKのクイックスタートでは、5つの言語でべき等性モデルとエラーハンドリングをより深く解説しており、APIとSDK機能ページに全エンドポイントの一覧があります。

汎用のショートナーホストではなく自分のドメインにリンクを置きたい場合は、domain_idを渡して先にドメインを設定してください。カスタムドメインガイドではDNSレコードと自動TLSを解説しており、カスタムドメイン機能では、自分のホスト上のブランドリンクが信頼とクリック率においてなぜ汎用のものを上回るかを説明しています。

方法3:Zapier、ノーコードの橋渡し#

プラグインとコードハンドラーの間にZapierがあります。自動化は欲しいが、PHPを書きたくなく、信頼できるプラグインが見つからない場合の正解です。

設定は2ステップのZapです。トリガーは「WordPressで新しい記事が公開された」。アクションは「Elidoでリンクを作成」。記事のパーマリンクをdestinationフィールドにマッピングし、オプションで記事タイトルをタグとして渡してオンにします。以降は、誰もエディターに触れることなく公開されるすべての記事がショートリンクを生成します。3番目のステップをチェーンして、ショートURLをGoogle Sheetに書き戻したり、Slackに投稿したり、ソーシャルスケジューラーに送り込むことができます。

Zapierはタスクごとの費用と数秒のレイテンシが発生し、べき等性とエラーハンドリングについてAPIが提供する細かいコントロールは得られません。代わりに、デプロイなしで10分で動く統合が手に入ります。ほとんどのパブリッシングチームにとって、ボリュームや精度がAPIへの移行を促すまでは、これが正しいトレードオフです。専用のZapier自動化ウォークスルーで複数ステップのZapを詳しく解説しています。

方法4:手動#

手動の方法を軽視しないでください。週数記事しか公開せず、各記事を意識的に共有しているなら、Elidoのダッシュボードで手動でショートリンクを作成して記事やソーシャルツールに貼り付けることは完全に合理的です。メンテナンス不要の統合でブランドリンクとフルクリックトラッキングが手に入ります。

手動の方法がスケールしなくなるのは、頻繁に公開するとき・複数の人が同じリンクを共有して一貫性が必要なとき・公開を押す前に記事本文にリンクが必要なときです。それが自動化のタイミングです。それまでは、ダッシュボードとコピー&ペーストは正当なセットアップであり、場当たり的な対処ではありません。

パーマリンクはショートリンクではない#

これは常にトラブルの元なので、はっきりお伝えします。WordPressのパーマリンクとショートリンクは異なる問題を解決しており、通常は両方が欲しいものです。

パーマリンクは自分のドメイン上の記事の人間が読みやすいURLです。読者と検索エンジンにページを理解させるためのものです。コンパクトではなく、文字数を数えるプラットフォームで共有するために設計されておらず、リンクがサイトを離れた後のクリックをWordPressはトラッキングしません。WordPressには古い?p=123の短URL形式とwp_shortlinkフックもありますが、それは自分のドメイン上のエイリアスに過ぎません。ブランド付きではなく、トラッキングもされません。

ショートリンクは意図的で、共有可能で、計測されるオブジェクトです。リダイレクトドメインに存在し、ブランドを持てて、リダイレクト時にUTMパラメータを追加でき、有効期限を設定でき、実際にクエリできるアナリティクスにすべてのクリックをログします。ニュースレターやソーシャルで記事を共有するときは、生のパーマリンクではなくショートリンクが欲しいはずです。クリック後に何が起きたかを教えてくれるのはショートリンクだけだからです。ブランドショートリンクの記事ではブランドドメインの設定を解説しており、パブリッシャー向けURLショートナーではパブリッシングワークフローに特化して深く解説しています。

壊れやすいWordPressリダイレクトプラグインの置き換え#

多くのWordPressサイトにリダイレクトプラグインが蓄積しています。一部は正当なSEO衛生管理(パーマリンク変更後の301修正)のためです。他のものは本来苦手なことをするために使われています。共有してトラッキングしたいアウトバウンドリンクやアフィリエイトリンクの管理です。

その2番目の用途で彼らは失敗します。「きれいな」アウトバウンドリンクを解決するリダイレクトプラグインは、クリックのたびにPHPとデータベースを通じてリダイレクトを実行します。実際のトラフィック下では、実際のコンテンツを提供しているホストに負荷が追加され、提供するクリックデータ(もしあれば)は薄いです。ダッシュボードではきれいに見えますが、負荷下では悪い動作をします。

クリーンな分割:リダイレクトプラグインは本来の役割である自分のURL上の内部301に使い続け、共有可能なアウトバウンドリンクとアフィリエイトリンクはオフサイトで解決して適切にトラッキングするショートナーに移しましょう。サービスするのが自分のサイトの仕事ではないリンクのPHPリダイレクト税を払うのをやめ、重要なリンクの本当のアナリティクスが手に入ります。

公開フロー:WordPressの記事が公開され、ブランドのElidoショートリンクが作成されてpost metaに保存され、リンクが共有されてすべてのクリックがWordPressのPHPではなくエッジでトラッキングされる

エッジでリダイレクトし、PHPで行わない#

これがショートナーがサイトを助けるか傷つけるかを決めるパフォーマンス上のポイントであり、アーキテクチャがプラグインより重要な理由です。

ショートリンクがWordPressを通じて解決されると、クリックは誰かが遷移先に到達する前にPHPスタックとデータベースに当たります。トリクルでは問題ありませんが、スケール時には辛く、共有リンクの速度がコンテンツサイトの負荷に結びつきます。ショートリンクがエッジで解決されると、クリックはWordPressにまったく触れません。ユーザーに近いリダイレクトPOPに当たり、キャッシュから応答され、転送されます。

Elidoはキャッシュヒット時にp95で15ms未満でマルチリージョンのエッジPOPでリダイレクトを解決します。WordPressホストはそのパスにありません。プラグイン・API・Zapier・手動のどの方法でリンクを作成した場合でも、クリック自体はオフサイトで提供されるため、バイラルな記事がCMSを引きずり下ろすことはありません。p95 15ms未満のリダイレクトの記事では、そのレイテンシ予算がどのように維持されるかを説明しており、アナリティクス機能ページではそれらのクリックすべてで何がログされるかを解説しています。

オフサイトで解決する議論を1行でまとめると:読者がクリックするリンクは、彼らに読んでほしいページと同じサーバーを共有すべきではありません。

方法の選び方#

最も手間を省きたく、ショートナーのメンテナンスされているプラグインがあればそれを使いましょう。コードなしで自動化したければZapierを使いましょう。フルコントロールとすべての公開で確実にリンクを作成したければ、APIとtransition_post_statusフックを使いましょう。公開頻度が低く意識的に共有しているなら手動でやりましょう。ほとんどのチームは手動またはZapierから始めて、ショートリンクがすべての記事のリリース方法の一部になったときにAPIに移行します。

どの方法を選んでも、2つのことを正しく行いましょう。出所のサイトに合ったブランドドメインでリンクを作成し、リダイレクトがWordPressのPHPではなくエッジで解決されるようにすること。ブランドリンクはマーケティング側が望み、エッジ解決はエンジニアリング側が望み、両者は矛盾しません。両方を得られます。キャンペーントラッキング側についてはマーケター向けソリューションページを、各プランの内容については価格ページをご覧ください。

ブログの関連記事#

Elidoを試す

EUホスティングのURL短縮サービス。カスタムドメイン、詳細な分析、オープンAPI付き。無料プラン - クレジットカード不要。

タグ
wordpress url shortener
wordpress url shortener plugin
shorten links in wordpress
wordpress short links
wordpress link tracking
branded links wordpress

続きを読む