首页 文章

Wordpress条件元标记描述

提问于
浏览
0

我目前在wordpress中使用条件元标记代码 . 除了在某些页面上,一切都很好 .

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;]" />

正如您所看到的,我的联系页面上只有一个联系表单,看起来我需要在脚本中添加一个过滤器,以便它忽略脚本标签和短代码,并且它会放置主页描述 .

我该如何解决这个问题?

3 回答

  • 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

  • 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\"] . 无论如何,这是一个非常糟糕的描述 - 你真正想要的是什么?

    还要注意你是使用UTF-8还是单字节编码,例如Latin-1,这在使用substr()时变得很重要(你不想在多字节UTF-8字符的中间切断) . 此外,如果您要添加省略号(...),则需要132个字符而不是135个字符 .

  • 0

    我做了类似的事情,有条件地摘录并使用它作为描述如果 Spectator 在一个帖子页面上有一个摘录 . 这是代码:

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

    我还写了一篇blog post详细说明了整件事 .

相关问题