0

現在、ワードプレスで条件付きメタ タグ コードを使用しています。特定のページを除いて、すべてが正常に機能しています。

header.php のコード:

<meta name="description" content="<?php echo metadesc($post->ID); ?>" />
<?php }else{ ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php } ?>

functions.php のコード:

function metadesc($pid) {
$p = get_post($pid);
$description = strip_tags($p->post_content);
$description = str_replace ("\n","",$description);
$description = str_replace ("\r","",$description);
if (strlen($description) > 135) {
return htmlspecialchars(substr($description,0,135) . "...");
}else{
return htmlspecialchars($description);
 }
}

ソースに移動して、次のページのメタ タグの説明を見ると、次のように表示されます。

home: (Wordpress の一般設定で定義されているホームページの説明 (チェック)

略歴: ページの最初の 135 文字 (チェック)

コンタクト:

 <meta name="description" content="[contact-form-7 id=&quot;25&quot; title=&quot;Contact&quot;]" />

ご覧のとおり、連絡先ページには連絡先フォームしかありません。スクリプトにフィルターを追加して、スクリプト タグとショート コードを無視し、代わりにホームページの説明を配置する必要があるようです。

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

0

これと同様のことを行い、条件付きで抜粋を取得し、視聴者が単一の投稿ページにいて抜粋がある場合は説明として使用しました。コードは次のとおりです。

<?php
if (is_single() && $post->post_excerpt != “”) {
$post = $wp_query->post;
$descrip = strip_tags($post->post_excerpt);
echo ‘&lt;meta name=”description” content=”‘.$descrip.’”&gt;’;
}
?>

全体の詳細をまとめたブログ記事も書きました。

于 2013-12-13T14:18:38.797 に答える
0

PHP に頻繁に出入りしているために、コーディング ミスや実行速度の低下が発生しています。最初のコードを次のように書き直します。

<?php
echo '<meta name="description" content="' .
  ((some condition)? metadesc($post->ID): bloginfo('description')) . '" />';
?>

では、コンテンツの生データを[contact-form-7 id=&quot;25&quot; title=&quot;Contact&quot;]何に変換しようとしているのでしょうか? どのように再フォーマットされますか? これは metadesc() 関数から来ていますか? 説明タグの HTML エンティティが文字に展開されるとは思いませんが、そのまま使用されます。[contact-form-7 id=\"25\" title=\"Contact\"]そのため、代わりに出力する必要がある場合があります。とにかく、それは非常に貧弱な説明です。あなたは本当にそこに何を望んでいますか?

また、substr() を使用する場合に重要になる、UTF-8 または Latin-1 などのシングル バイト エンコーディングのどちらを使用しているかにも注意してください (マルチバイト UTF-8 文字の途中で切り刻むのは望ましくありません)。 . また、省略記号 (...) を追加する場合は、135 文字ではなく 132 文字を使用する必要があります。

于 2013-09-04T22:00:25.637 に答える
0

strip_shortcode関数を使用する場合は、これを試してください

function metadesc($pid) {
$p = get_post($pid);
$description = strip_tags($p->post_content);
$description = str_replace ("\n","",$description);
$description = str_replace ("\r","",$description);
$description =strip_shortcodes($description  );
if(empty($description )){

return please get home page content
}
else{
if (strlen($description) > 135) {
return htmlspecialchars(substr($description,0,135) . "...");
}else{
return htmlspecialchars($description);
 }

}

}

strip_shortcodes

于 2013-07-10T17:47:24.570 に答える