我正在尝试制作一个专门为我的网站制作OpenGraph标签的mu插件,因为WP目录中的当前插件已经很久没有更新了。
但我在尝试获取帖子或页面数据时遇到了一些麻烦,这是我以前从未尝试过的。
使用此代码:
<?php
/*
Plugin Name: Open Graph!
Description: Adiciona tags Open Graph (Facebook) para o site.
Author: ChronoMania Team
Version: 1.0
Author URI: http://chronomania.com.br
*/
function pegarConteudoPost()
{
if (is_single())
{
$texto = apply_filters(\'the_excerpt\', get_post_field(\'post_excerpt\', $post_id));
if empty($texto)
{
$texto = wp_trim_words($post->post_content);
}
if empty($texto)
{
$texto = get_bloginfo(\'description\');
}
}
elseif (is_page())
{
$texto = wp_trim_words($page->post_content);
}
else
{
$texto = get_bloginfo(\'description\');
}
return $texto;
}
function pegaURLAtual()
{
$link = \'http://\' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
return $link;
}
function montaOpenGraph()
{
echo \'<meta property="og:title" content="\' . wp_title("", false) . \'">\';
echo \'<meta property="og:site_name" content="\' . get_bloginfo(\'name\') . \'">\';
echo \'<meta property="og:url" content="\' . pegaURLAtual() . \'">\';
echo \'<meta property="og:description" content="\' . pegarConteudoPost() . \'">\';
echo \'<meta property="og:image" content="\' . get_template_directory_uri() . \'/img/social/ogp_logo.png">\';
echo \'<meta property="og:type" content="article">\';
}
// Registrando funções
add_action(\'wp_head\', \'montaOpenGraph\');
?>
它给我错误500。因此,我设法将错误跟踪到函数pegarConteudoPost()。
正如我之前所说的,我对php没有太多经验(所以是jury-rig代码),也不需要处理循环外的数据,所以我从google中挖掘了一些代码并放在那里,没有结果。
有什么办法可以让这一切顺利进行吗?
最合适的回答,由SO网友:Vico 整理而成
在几次头痛之后,我根据米洛的回答设法解决了这个问题。但是我需要添加一个检查,如果摘录返回空,如果它返回空,我需要修剪整个内容字符串以获得所需的数据。
最终代码:
function pegarConteudoPost()
{
if( is_single() || is_page() )
{
$this_page = get_queried_object();
$excerpt = get_post_field( \'post_excerpt\', $this_page->ID );
if ($excerpt === \'\')
{
$excerpt = wp_trim_words(get_post_field( \'post_content\', $this_page->ID ), 55);
}
$texto = $excerpt;
}
else
{
$texto = get_bloginfo(\'description\');
}
return $texto;
}