メインコンテンツへ移動

Baiduサーチリソースプラットフォームのリンク送信

無料2016-03-08#Solution#链接自动提交#wordpress sitemap

POST送信やWPプラグインによる送信を試しましたが、どれもうまくいきませんでした。サイトマップを通じたリンクの自動送信がおすすめで、BaiDuSpiderが定期的に取得しに来てくれます。

はじめに

アクセス数の少ない新しいサイトにとって、検索エンジンに新しいコンテンツをインデックスしてもらうのは時間がかかります。Baiduサーチリソースプラットフォームが提供するインターフェースを通じてアクティブにリンクをプッシュすることで、インデックスを早めることができます。Baiduサーチリソースプラットフォームの関連機能への入り口:ログイン後、左側のリストにある链接提交をクリックしてください。

1、アクティブプッシュ:最も迅速な送信方法です。サイトで当日新しく作成されたリンクをこの方法ですぐに百度にプッシュし、新しいリンクが適宜インデックスされるようにすることをお勧めします。

2、自動プッシュ:最も便利な送信方法です。自動プッシュ用のJSコードをサイトの全ページのソースコードに配置してください。コードが配置されたページが閲覧されるたびに、リンクが自動的に百度にプッシュされます。アクティブプッシュと組み合わせて使用できます。

3、サイトマップ:定期的にサイトのリンクをサイトマップに入れ、そのサイトマップを百度に送信できます。百度は定期的に送信されたサイトマップをクロール・チェックし、その中のリンクを処理しますが、インデックスの速度はアクティブプッシュよりも遅くなります。

4、手動送信:一度にリンクを百度に送信したい場合に、この方法を使用できます。

P.S. 筆者の環境は PHP5.3 + WordPress4.2 です。

1. アクティブプッシュ

最も速い方法と言われています。WPでは簡単に実装でき、functions.php(WP管理画面の外观->编辑->模板函数(functions.php)でオンライン編集するか、FTPツールでダウンロードして修正してアップロードします。パスはwordpress/wp-content/themes/[currentTheme]/functions.phpです)を直接編集し、冒頭のコメントが終わる位置にフィルターを追加します。以下の通りです:

/*submit url*/
function submitUrl($postID, $post) {
    $url = 'www.ayqy.net/blog/'.$post->post_name.'/';
    $api = 'http://data.zz.baidu.com/urls?site=www.ayqy.net&token=[yourtoken]';
    $ch = curl_init();
    $options =  array(
        CURLOPT_URL => $api,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => $url."\n",
        CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
    );
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);
    
    //echo $result;
    if (function_exists( 'swpsmtp_test_mail' )) {
        $email = 'nwujiajie@163.com';
        swpsmtp_test_mail( $email, 'Submit Result', $result.'<p><a href="http://'.$url.'">点我</a>查看原文<p>' );
    }
}

add_action('publish_post', 'submitUrl', 0, 2); // submit url
/*end submit url*/

注意:上のコード内の[yourtoken]をBaiduサーチリソースプラットフォームから取得したトークンに置き換えてください。

記事を投稿する際にフィルターを実行し、記事のURLを組み立ててから、curl_execでPOSTリクエストを送信してURLを送信します。最後に、リンク送信の結果をメールで送信します(WPでメールを送信するにはSMTPの設定が必要です。筆者はEasy WP SMTPプラグインを使用しています)。

効果はまずまずで、記事を投稿するたびに自動的にリンクが送信されます。欠点は以前のリンクを送信できないことです。以前のリンクを送信する必要がある場合は、サイトマップによる自動送信を利用できます。以下で詳細に説明します。

2. 自動プッシュ

...自動プッシュ用のJSコードをサイトの全ページのソースコードに配置してください...

これは検討しません。ページで読み込まれるJSはすでに十分に多く、ますます遅くなるのは良くありません。どうしてもこの方法を使いたい場合は、footer.phpfunctions.phpを変更する方法と同じで、ファイルの場所も同じです)を編集し、</body>の前に以下のコードを追加してください:

<script>
(function(){
    var bp = document.createElement('script');
    bp.src = '//push.zhanzhang.baidu.com/push.js';
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>

P.S. 上記のコードはBaiduサーチリソースプラットフォームから提供されているもので、どのサイトでも同じはずですので、変更は不要です。

この方法はお勧めしません。手間はかかりませんが、すべてのユーザーに負担を強いるのは正しくありません。

3. サイトマップ

最も便利な方法です。もちろん、自動的に更新されるsitemap.xmlファイルがあらかじめ用意されていることが前提ですが、これは自分で行う必要はなく、WPプラグインのAll In One SEO Packを使用できます。

プラグインをインストールして有効化すると、WP管理画面の左側仪表盘の下に多合一SEO集が表示されます。サブメニューのXML网站地图が私たちが求めているsitemap.xmlです。更新网站地图をクリックすると、以下のような出力情報が表示されます:

2016-03-08 15:46:03  3.29 MB memory used generating the dynamic 压缩 root sitemap in 0.628 seconds, 35.38 MB total memory used.
2016-03-08 09:17:31  3.25 MB memory used generating the dynamic root sitemap in 0.596 seconds, 35.34 MB total memory used.
2016-03-08 00:41:29  3.25 MB memory used generating the dynamic root sitemap in 0.595 seconds, 35.34 MB total memory used.
2016-03-07 19:23:09 Daily scheduled sitemap check has finished.
2016-03-07 19:23:09 已成功通知bing贵站网站地图(http://www.ayqy.net/blog/sitemap.xml.gz)的变动。
2016-03-07 19:23:09 通知google贵站网站地图(http://www.ayqy.net/blog/sitemap.xml.gz)变动失败,无法通过wp_remote_get()访问。

推測すると、サイトマップはhttp://www.ayqy.net/blog/sitemap.xmlです。ダウンロードを試みるか、ブラウザでアクセスしてみてください。問題がないことを確認したら、このURLを持ってBaiduサーチリソースプラットフォームのフォームに入力しましょう。

特に注意:サイトマップのリンクはhttp://を含む完全なURLである必要があ��、フォームのヒントにあるような形式ではありません

例は以下の通りです:
www.site.com/site.txt
www.site.com/site.xml

次に、確認コードを入力して送信すれば完了です。5分後に確認し、ステータスが「正常」であればOKです。これで、リンクの送信を気にする必要はもうありません。

4. 構造化データプラグイン

公式からデータ送信用のWPプラグインが提供されています。ダウンロード先:http://bs.baidu.com/zhanzhang/wp-baidusubmit-140213.zip

紹介は以下の通りです:

サイトマップを自動プッシュし、コンテンツのインデックスを最適化します サイトマップの権限がなく、サイトマップデータの送信方法がわからない?構造化データプラグインが解決します。フォーラムの投稿ページの履歴URLデータをトラバースし、自動的にサイトマップを生成して百度に送信します。

フォーラムの新しいコンテンツをリアルタイムでプッシュし、インデックスを加速させます 毎日大量の新しい投稿がある?各種データが頻繁に更新される?構造化データプラグインが解決します。新しい投稿が公開されると、すぐに新しい投稿のURLとコンテンツをBaiduサーチリソースプラットフォームにプッシュし、投稿ページが変化した場合も、百度はリアルタイムで対応するデータを更新できます。

良質なコンテンツ、表示の最適化、ユーザーのクリック率向上 良質なコンテンツが十分に目立たない?構造化スニペットを適用して表示を最適化し、結果のクリック率を向上させれば、トラフィックの着実な増加は夢ではありません。

実際にはウェブマスターに一匹の小さなクモを預けるようなもので、コンテンツが更新(例えば記事の投稿)されると、小さなクモが出てきて、取得した内容を処理して百度に送信します。

WPプラグインはエラーを出す可能性があります(公式の正規品ですが)。エラーは以下の通りです:

Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/xxx/

CURLOPT_FOLLOWLOCATIONはリンクを深くクロールするために使用されますが、PHPのセーフモード下ではこのオプションはサポートされていません。プラグインのためにセーフモードをオフにすることはお勧めしませんので、プラグインを修正します。sitemap.php(パスはwordpress/wp-content/themes/[currentTheme]/functions.php)の冒頭の<phpタグの次の行に、以下のコードを追加します:

// fix CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode
function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) {
    $mr = $maxredirect === null ? 5 : intval($maxredirect);
    if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) {
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $mr > 0);
        curl_setopt($ch, CURLOPT_MAXREDIRS, $mr);
    } else {
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
        if ($mr > 0) {
            $newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

            $rch = curl_copy_handle($ch);
            curl_setopt($rch, CURLOPT_HEADER, true);
            curl_setopt($rch, CURLOPT_NOBODY, true);
            curl_setopt($rch, CURLOPT_FORBID_REUSE, false);
            curl_setopt($rch, CURLOPT_RETURNTRANSFER, true);
            do {
                curl_setopt($rch, CURLOPT_URL, $newurl);
                $header = curl_exec($rch);
                if (curl_errno($rch)) {
                    $code = 0;
                } else {
                    $code = curl_getinfo($rch, CURLINFO_HTTP_CODE);
                    if ($code == 301 || $code == 302) {
                        preg_match('/Location:(.*?)\n/', $header, $matches);
                        $newurl = trim(array_pop($matches));
                    } else {
                        $code = 0;
                    }
                }
            } while ($code && --$mr);
            curl_close($rch);
            if (!$mr) {
                if ($maxredirect === null) {
                    trigger_error('Too many redirects. When following redirects, libcurl hit the maximum amount.', E_USER_WARNING);
                } else {
                    $maxredirect = 0;
                }
                return false;
            }
            curl_setopt($ch, CURLOPT_URL, $newurl);
        }
    }
    return curl_exec($ch);
}
// end fix CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode

次に、エラーの出ている箇所を以下のように置き換えます:

// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec_follow($ch);   // fix CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode

注意:リンクの深いクロールは比較的遅く、このプラグインをインストールすると、記事を投稿するたびに30秒ほどかかるようになります。慎重に判断してください。

5. まとめ

まず必須なのは、サイトマップの自動送信です:

[caption id="attachment_961" align="alignnone" width="776"]sitemap sitemap[/caption]

そして、アクティブプッシュと構造化データプラグインを補助的な手段として利用できます:

[caption id="attachment_962" align="alignnone" width="242"]baidu sitemap baidu sitemap[/caption]

コメント

コメントはまだありません

コメントを書く