以上 2 years ago I published an article on how to fix problems with WordPress themes which didn’t pass the Google Rich Snippets Testing Tool. それ以来、多くが変更されました - ワードプレスとほとんどのテーマは、より良いサポートがある, HTML5とCSS3が到着しました, とGoogle, Yahoo and Bing got together and decided to focus on Microdata, schema.org経由. 一度マイクロフォーマットは、ページをマークアップするための最も簡単な方法のように見えた, およびテストツールは、これらのための最も包括的なサポートを持っていた. ミクロデータに移動し、WordPressへの変更は、新しい記事を必要と: これがそうだ!
代わりに、私はすべての情報を提供しようとすることを決定したさまざまなテーマごとに個別の記事の多くを持っていることの 1 ガイド. This makes it easier to keep up to date, だけが存在することを意味し 1 すべての要求と議論の中心点. It also makes more sense as several of the steps are the same regardless of what theme you are using. I’m not going to cover all the optional extras in this article, ただ基本的なツールを使用してサイトを検証するために取得する. あなたが見つける必要があることを管理したら、余分なマークアップを追加することは比較的容易である. そう始めることができます...
Add a link from your google profile to your site
あなたは上の表示されます 私のGoogle のプロファイル 私は公衆のリンクを持っている https://diymediahome.org - あなたがあなた自身のサイトのための同じをする必要があります. 理想的にはこれと同じ方法で、あなたのサイトにリンクされているGoogleプロフィールを持っている、あなたの著者のすべてが必要になります.
- にログインしてください Googleのプロファイル
- あなたが表示されるまでスクロール リンク どこかにページの右下に向けてのセクション
- をクリックします 編集 リンク
- 下 contributor to セクションをクリック お客トムリンクを追加
- テキストの右側のボックスを確認してください contributor to に設定されています 公共
- あなたのサイト名を入力してください (例えば. DIY メディアホーム) およびアドレス (例えば. https://diymediahome.org)
- [保存]をクリックします
あなたのサイトからGoogleプロフィールへのリンクを追加
今、私たちは、Googleプロフィールにあなたの著者ページからリンクを追加する必要があります. あり 2 これを行うにはALTERN-AT-IVEの方法, 私は非常にヨーストを使用して推奨つくろう この プラグイン.
- インストール ヨースト この PLU-GIN または あなたのテーマのfunctions.phpのファイルに次のコードを追加します
機能update_contactmethods( $contactmethods ) { // Add Google Profiles $contactmethods['googleplus'] = 'Google の'; // Add Twitter $contactmethods[「ツイッター」] = _( 「Twitterのユーザー名 (@なしで)', 「Wordpressの - SEO」 ); 返す$ contactmethods; } ADD_FILTER( 'user_contactmethods', 'update_contactmethods', 10, 1);
- WordPressの管理画面で、あなたの著者プロフィールに行く (hover over ユーザー 左側のメニューで, 、をクリックして下さい あなたのプロファイル)
- で Google+の フィールドには、Googleのプロファイルへのリンクを追加 (例えば. https://plus.google.com/104657888470728381512 /)
- もしどちらかを確認してください, or your other site authors do the same thing, 自分のGoogleプロフィールへの各リンク
- 今, あなたはヨーストPLU-GINを使用している場合, に行く この メニューを選択 タイトルやメタ情報, C言語でなめる ホームホーム ページの上部にあるとのメニュー 高光INGのオーサリング プルダウンボックスでは、ホームページの作成者として使用したいユーザーを選択
- あなたが手動header.phpのために、次のコードを追加する必要がありますヨーストプラグインを使用していない約執拗なら (仮定して、1つを持っている). Don’t forget to change my google profile url to yours. This code will use the post author’s google profile url if there is a valid one, およびデフォルトを使用します (あなた) 存在しない場合.
<リンクREL ="著者" HREF ="<?PHPの$のジープラス= 'HTTPS://plus.google.com/115369062315673853712/posts '; もし ( is_singular() ) {グローバル$ポスト; $ジープラス= get_the_author_meta( 'googleplus', $ポスト>post_author );} エコーの$ジープラス; ?>"/>
Fix errors of a missing “updated” field
ほとんどのWordpressのテーマは、ポストは、ポスト情報エリアに掲載された際の情報が含まれ, それが最後に更新されたときには非常に少数にも含まれ. これは残念です, because updated is required whereas published actually isn’t! それを追加することも簡単です, そして再び, がある 2 方法, the proper way and the quick hack way. I recommend the proper way of course, しかし、必要に応じて迅速なハックに頼ることができます. また、同時にマイクロフォーマットからミクロに変更しようとしている.
適切な方法
We’re going to add some additional information to post headers, 検索エンジンのための、私たちのVIS-IT的論理和をとり、両方. 我々はポストのためにこれを行う必要があります, ページ, アーカイブとホームページ.
- 私たちは、公開されたリンクを生成するコードを含むファイルを見つける必要がある. これはほぼ確実にWordPressの機能を使用します get_the_date(). あなたのテーマファイルを検索することができます, or refer to theme specific details below where I have provided details for lots of themes
- 私たちは、出版され、更新された日付が同じであるかどうかを確認しようとしている. その場合、我々は単に余分に追加されます dateUp時代遅れ itempropしかし、彼らが異なっている場合、我々は、出力の訪問者にいくつかの余分なテキストをう
- 私たちは、FOL低INGを追加しようとしている (and modify it as it explains)
<?PHPの場合(get_the_date()== get_the_modified_date()): ?> //我々は、更新されたクラスが追加されただけで、元のコードを使用するつもりだ / /ここにあなたのテーマの元のコードを入れて / / =任意のクラスを削除する"" //itemprop =を追加"datePublished dateCreated DateModified(更新日付)" to the HTMLの tag surrounding the get_the_date() 機能 <?他のPHP: ?> //私達はちょうど更新された追加された日付と少しのコードを使用するつもりだ / /ここにしてから、以下のようにそれを変更するには、あなたのテーマの元のコードをコピーして / / =任意のクラスを削除する"" //itemprop =を追加"datePublished dateCreated" to the HTMLの tag surrounding the get_the_date() 機能 / /あなたはそれが以下のように表示したいラインに新しいHTMLタグに追加 / /更新 <?PHPエコーget_the_modified_date() ?> <?PHP endifの; ?>
- You’ll either have to figure out the original theme’s code and edit it, or refer to the details for specific themes below.
- 複数のファイルのためにこの編集を繰り返す必要があります
クイックハック
我々は、更新された日付などの発行日をカンニングして供給するつもりだ, ポストは、実際には、より最近に更新されている場合でも、. 投稿が更新されているならば、我々は実際に間違った情報を提供することでしょう, それはまだヴァル-ID-食べます. それは実際に可能であれば適切にそれを行うことをお勧めします, あなたがそれを行う上で執拗ならが、この方法では、読み. 上記のように、我々はポストのためにこれを行う必要があります, ページ, アーカイブとホームページ.
- 私たちは、公開されたリンクを生成するコードを含むファイルを見つける必要があり、上記のように. これはほぼ確実にWordPressの機能を使用します get_the_date(). あなたのテーマファイルを検索することができます, または私はテーマの多くの詳細を提供してきた以下の表を参照してください。
- 見つける HTMLの 日付をシュール丸めエレメントメント (しばしば、それが持っているでしょう
class="published"
). - クラスを削除し、代わりに以下を追加して、要素を編集
itemprop="datePublished dateCreated dateUpdated"
- 上記のように, あなたは複数のファイルで、この編集を繰り返す必要があります
Replacing the built-in microformats (because mixing rich snippet formats breaks things)
デフォルトのワードプレスで、まだコメントをマイクロフォーマットのマークアップを使用しています, 悲しいことに、レシピのようなもののミクロデータのマークアップを破るように思われる. この問題を解決する最良の方法は、マイクロフォーマットのマークアップを削除し、ミクロデータマークアップと交換することです. Unfor-TU-nately, これには約いじっのビットを必要とするので、このマークアップを生成するWordPressのコア機能は、便利な場所にフィルタやフックを持っていない.
Replacing vcard in the comments section
- 私たちがやろうとしていることは、コメントの出力を変更するには、コメントのコールバックを使用している. Many themes already use a callback which we can modify, とそうでないもののために私たちはWordPressのデフォルトに基づいて1を追加します
- あなたのテーマを既にコメントのコールバックを持っているかどうかを確認します - 関数のあなたのテーマファイルを検索
wp_list_comments
. それは、コードが含まれている場合callback=
また'callback' =>
それはあなたが見つけることができる必要があり、コールバックを使用しています (確率巧みのfunctions.php内) コールバック関数の名前を探すこと, =記号や矢印の後にその一部である, 例えば.wp_list_comments( array( 'callback' => 'twentyten_comment' ) );
またwp_list_comments('type=comment&callback=bones_comments');
. If it doesn’t then we will need to add one by addingcallback=diymh_comment
またarray( 'callback' => 'diymh_comment' )
ラインへ. - あなたはコメントのコールバックを追加するために必要な場合、あなたはのfunctions.phpに次のコードを追加する必要があります
機能diymh_comment($コメント, $引数, $深さ) { $GLOBALS['コメント'] = $コメント; ?> <その <?PHPのcomment_class(); ?> ID ="リチウム方法<?PHP COMMENT_ID() ?>"> <DIVのID ="コメント - <?PHP COMMENT_ID(); ?>"> <DIVクラス="コメント·著者novcard"> <?PHPエコーget_avatar($コメント,$サイズ= '48 ',$デフォルト= '<path_to_url>' ); ?> <?PHPのprintf(_('<=クラスを引用"FN">%S</引用する> <スパンクラス="言う">言う:</スパン>'), get_comment_author_link()) ?> </DIV> <?PHPの場合 ($コメント - >comment_approved == '0 ') : ?> <で><?PHPの_e('あなたのコメントは管理者の承認待ちです。 ") ?></で> <BR /> <?PHP endifの; ?> <DIVクラス="どのようにメタcommentmetadata"><HREF ="<?PHPのエコーデータを元に戻し( get_comment_link( $コメント - >COMMENT_ID ) ) ?>"><?PHPのprintf(_('%2 $ sの%1 $ S'), get_comment_date(), get_comment_time()) ?></a><?PHPのedit_comment_link(_('(編集)'),'','') ?></DIV> <?PHPのCOMMENT_TEXT() ?> <DIVクラス="返信"> <?PHPのcomment_reply_link(array_merge( $引数, 配列(「深さ」=> $深さ, 'max_depthの' => $引数['max_depthの']))) ?> </DIV> </DIV> <?PHP }
- あなたは、このコードが持っていることがわかります
class="novcard"
instead of the originalclass="vcard".
- あなたのテーマは、独自のコールバックを持っていなかった場合は、コールバック関数を見つけ、任意のインスタンスを置換する必要があります
class="vcard"
とともにclass="novcard"
Replacing hfeed in the header
- 次, 我々はまた、任意のインスタンスを削除する必要があります
class="hfeed"
, これ有珠同盟国header.phpの中で発見された. すべての発生·rencesを交換してくださいhfeed
とともにnohfeed
Replacing hentry and title rich snippets
- 私たちは、のfunctions.phpに追加きちんと機能のカップルと、これらの要素を置き換えることができます
機能diymh_replace_hentry($クラス){ もし(($キー= array_search('hentry', $クラス)) !== falseを) $クラス[$キー]= 'nohentry'; 返す$クラス; } ADD_FILTER('post_class','diymh_replace_hentry'); 機能diymh_microdata_title($タイトル) { RETURN '<スパンitemprop ="名前">'$のタイトル。'</スパン>'; } ADD_FILTER(「the_title ', 'diymh_microdata_title', 10, 2);
Adding the information type (例えば. Article, レシピ, その他) to the article header
- 最初の, decide what type of work you are publishing — most likely an article. Have a look at the list at schema.org
- 見つける HTMLの タグこれCON-TAINS機能のTiON
post_class()
- コードを追加します。
itemscope itemtype="https://schema.org/Article"
(あなたが仕事の様々なタイプを選んだ場合は、記事を交換してください)
最後に, to avoid breaking any styles
- あなたのテーマのstyle.cssにを編集する必要があり、すべてのインスタンスのを置き換えるために、検索/置換操作を行います
.vcard
とともに.novcard
とのすべてのインスタンスを置き換える.hfeed
とともに.nohfeed
私たちの変更は、いずれかの混乱をしないように CSS コメントのSTYL-ING
Fixing any other errors
Any other changes necessary will be detailed on a per theme basis below. あなたが修正することができないテーマがある場合はコメントを投稿してください. その自由なテーマなら、私はテーマ名を教えてください, and if it is a premium theme please let me know so I can provide you with an e‑mail address to send a zipped copy to.
Theme specific details
Before just carrying out these edits don’t forget to carry out the steps to link your google profile and your site to each other, とヨーストをインストール この, 以上提供するコードを追加します.
二十テン 1.5
のfunctions.phpでこれを置き換える
機能twentyten_posted_on() { のprintf( _( '<スパンクラス="%1$S">掲示された</スパン> %2$S <スパンクラス="メタ9月">沿って</スパン> %3$S ', 「twentyten ' ), 「メタプレップメタ分取作者, はsprintf( '<HREF ="%1$S" タイトル="%2$S" REL ="ブックマーク"><スパンクラス="エントリーの日付">%3$S</スパン></a>', get_permalink(), esc_attr( get_the_time() ), get_the_date() ), はsprintf( '<スパンクラス="著者のvCard"><クラス="URLのFNのN" HREF ="%1$S" タイトル="%2$S">%3$S</a></スパン>', get_author_posts_url( get_the_author_meta( 「ID」 ) ), esc_attr( はsprintf( _( '%sの投稿をすべて表示'、, 「twentyten ' ), get_the_author() ) ), get_the_author() ) ); }
これとともに
機能twentyten_posted_on() { もし(get_the_date()== get_the_modified_date()){ のprintf( _( '<スパンクラス="%1$S">掲示された</スパン> %2$S <スパンクラス="メタ9月">沿って</スパン> %3$S ', 「twentyten ' ), 「メタプレップメタ分取作者, はsprintf( '<HREF ="%1$S" タイトル="%2$S" REL ="ブックマーク"><スパンitemprop ="datePublished dateCreated DateModified(更新日付)">%3$S</スパン></a>', get_permalink(), esc_attr( get_the_time() ), get_the_date() ), はsprintf( '<スパンクラス="著者のvCard"><itemprop ="著者" HREF ="%1$S" タイトル="%2$S">%3$S</a></スパン>', get_author_posts_url( get_the_author_meta( 「ID」 ) ), esc_attr( はsprintf( _( '%sの投稿をすべて表示'、, 「twentyten ' ), get_the_author() ) ), get_the_author() ) ); } ほかに{ のprintf( _( '<スパンクラス="%1$S">掲示された</スパン> %2$S <スパンクラス="メタ9月">沿って</スパン> %3$S. 更新した <スパンitemprop ="DateModified(更新日付)">%4$S</スパン>.', 「twentyten ' ), 「メタプレップメタ分取作者, はsprintf( '<HREF ="%1$S" タイトル="%2$S" REL ="ブックマーク"><スパンitemprop ="datePublished dateCreated">%3$S</スパン></a>', get_permalink(), esc_attr( get_the_time() ), get_the_date() ), はsprintf( '<スパンクラス="著者のvCard"><itemprop ="著者" HREF ="%1$S" タイトル="%2$S">%3$S</a></スパン>', get_author_posts_url( get_the_author_meta( 「ID」 ) ), esc_attr( はsprintf( _( '%sの投稿をすべて表示'、, 「twentyten ' ), get_the_author() ) ), get_the_author() ), get_the_modified_date() ); } }
のfunctions.phpでこれを置き換える
<DIVクラス="コメント - 著者のvCard">
これとともに
<DIVクラス="コメント·著者novcard">
header.phpの中で、これを交換してください
<DIVのID ="ラッパー" クラス="hfeed">
これとともに
<DIVのID ="ラッパー" クラス="nohfeed">
loop.php中 (3 インスタンス), ループsingle.php, ループpage.phpとループattachment.phpはこれを交換する
<DIVのID ="ポスト<?PHP the_ID(); ?>" <?PHPのpost_class(); ?>>
これとともに
<DIVのID ="ポスト<?PHP the_ID(); ?>" <?PHPのpost_class(); ?> itemscopeはアイテムタイプ="https://schema.org /記事">
二十セブンイレブン 1.5
非常にすぐにCOM-ING ...
Annotumベース 1.1.1
で 7 ファイル (機能特徴 - articles.php, 抜粋タイプ - article.php, 抜粋抜粋 - default.php, コンテンツタイプ - article.php, コンテンツの page.php, コンテンツのコンテンツdefault.php, コンテンツ物品pdf.php) 交換する
<記事 <?PHPのpost_class('記事フル'); ?>>
とともに
<記事 <?PHPのpost_class('記事フル'); ?> itemscopeはアイテムタイプ="https://schema.org /記事">
Thanks — working on it — eisenberg.co.za
すばらしいです, grazie mille!