在头部创建迷你循环以使用高级摘录 - 循环使用当前帖子ID

时间:2012-04-30 10:31:07

标签: wordpress

我正在使用advanced excerpt插件,因为它的选项有更多的灵活性。

虽然如果发现插件存在缺陷,我必须使用remove_all_filters('the_excerpt');删除标准摘录功能,否则会与高级摘录选项冲突。

问题

我想在facebook的开放图元中添加除了我的头。通常我会用一个简单的get_the_excerpt();来做这件事,并将其编织到元标记中,如此......

<meta property="og:description" content="<?php echo get_the_excerpt(); ?>" />


但这不起作用 - 因为我删除了摘录过滤器。


如何解决?

我在创建WP查询时尝试获取当前ID并创建一个迷你循环,我可以将高级专家调用放入。

但由于某种原因,这个循环打破了我的网站,我似乎无法修复。任何人都可以帮我修复这个循环。非常感谢谢谢。


<?php if ( is_single() || is_page() ) {

    $postID         = get_the_ID();
    $fbexcerpt      = new WP_Query(array( 'p' => $postID ));

    while ($fbexcerpt->have_posts()) :
    $fbexcerpt->the_post();

    echo '<meta property="og:description" content="' . the_advanced_excerpt('length=120&use_words=0') . '" />';

    unset($fbexcerpt);
    endif; wp_reset_query();

} ?>



更新

如果有人有任何不需要'高级摘录'的替代想法 - 那么我通过我的functions.php插入开放的图形元素

function insert_fb_in_head() {
    global $post;
    if ( !is_singular()) 
        return;

        echo '<meta property="og:description" content=" . $MyExcerptHere . "/>';

    echo "\n";
}
add_action( 'wp_head', 'insert_fb_in_head', 5 );

1 个答案:

答案 0 :(得分:0)

为什么不简单地使用get_post

 $my_post = get_post($id);
 $excerpt = $my_post->post_excerpt;

然后使用这样的函数来检索最多x个字符的单词:

  function extractText150char($text, $length = '150') {
    $textArr = explode(' ', $text);
    $text = '';

    // Loop through each word
    for ( $i=0; $i<count($textArr)-1; $i++ ) {
      $text .= $textArr[$i] . ' ';
      // Check string length
      if ( (strlen($text) + strlen($textArr[$i+1]) ) > $length )
        return $text;
    }
    return $text;
  }