作为元描述的自定义字段

时间:2016-08-05 作者:wootopia

我想在正常的帖子添加页面(在仪表板中)内创建一个描述输入字段,这样每次我发布内容时,我都可以随心所欲地处理描述。然后,我会将此名称字段作为目标,在标题中添加类似的内容:

echo \'<meta name="description" content="\' . $mycustomfield . \'" />\' . "\\n";
因此,最后的结果是这样的(如果需要,请更正我):

function mycustomdescription() {
   global $post;
   if ( is_single() ) {
      echo \'<meta name="description" content="\' . $mycustomfield . \'" />\' . "\\n";
   }
}
add_action( \'wp_head\', \'mycustomdescription\' , 2 );
我该如何以正确的方式做到这一点?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

如果要从名为wpse_desc:

custom field

然后,有一种方法可以使用您的代码片段做到这一点:

function wpse_custom_meta_description() 
{
    // Nothing to do
    if ( ! is_single() )
        return;

    // Fetch our custom field value
    $desc = get_post_meta( get_queried_object_id(), \'wpse_desc\', true );

    // Output
    if( ! empty( $desc ) )
        printf( 
            \'<meta name="description" content="%s" />\',
            esc_attr( trim( $desc ) )
        );
}
add_action( \'wp_head\', \'wpse_custom_meta_description\' , 2 );
避开content属性的值很重要,因为您不希望您网站的作者能够编写以下内容:

><script>alert(\'Hello World!\');</script><
我们可能还想用wp_strip_all_tags() 并限制字数wp_trim_words(), 也使用wp_strip_all_tags(), 但我们应该记住,它仍然允许使用很长的单词。如果你需要一个最大长度,那么你可能需要进一步研究,我相信有各种各样的方法。

在这里,我们使用wpse_ 前缀,以避免可能的名称冲突。

希望您可以根据自己的需要进行调整,例如使用帖子摘录或帖子内容回退。

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: