0

我正在使用高级摘录插件,因为它的选项有更多的灵活性。

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

问题

我想在 facebook 的开放图元中将 except 添加到我的脑海中。通常我会用一个简单的方法来做到这一点,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 );
4

1 回答 1

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;
  }
于 2012-04-30T11:52:40.713 回答