是否仅从_Content()获取链接值?

时间:2011-03-29 作者:Beto

我在帖子中有我的新闻,我正试图在主页上显示两篇最新的新闻文章(帖子)。我通过使用the_title() 并使用the_excerpt().

我想展示更多将您带到帖子的链接。然而,我正在发布的一些新闻文章在帖子正文中有一些文本,这是一个链接,我如何只在帖子正文中获得链接,以便我的更多链接直接将您带到那里?

例如,有时我们会链接到另一台服务器上PDF中的新闻文章。

我正在使用以下代码。

<?php query_posts(\'category_name=news2011\'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php /* the_ID(); */ ?> 
    <?php /* the_date(\'F Y\'); */ ?>
    <ol class="news">
        <strong><p><?php the_title()?></p></strong>
        <li><?php the_content(); ?></li>
    </ol>
<?php endwhile; endif; ?>

2 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

您可以扫描内容以查看其是否包含链接,然后对其进行分析以找到href 属性有很多方法可以做到这一点,此示例使用内置的kses功能,as demonstrated by Otto:

$post_link = get_the_permalink();
if ( preg_match(\'/<a (.+?)>/\', get_the_content(), $match) ) {
    $link = array();
    foreach ( wp_kses_hair($match[1], array(\'http\')) as $attr) {
        $link[$attr[\'name\']] = $attr[\'value\'];
    }
    $post_link = $link[\'href\'];
}

SO网友:Waleed

上述解决方案非常完美,但它只需要http链接。通过使用下面的代码,它将采用http和https链接。

$post_link = get_the_permalink();
if ( preg_match(\'/<a (.+?)>/\', get_the_content(), $match) ) {
    $link = array();
    foreach ( wp_kses_hair($match[1], array(\'https\',\'http\')) as $attr) {
        $link[$attr[\'name\']] = $attr[\'value\'];
    }
    $post_link = $link[\'href\'];
}

结束

相关推荐

Stop underlining image links

在我的小部件栏上,我有一个超链接的图像。问题是CSS强调了这一点。如何删除下划线?更新:刚刚注意到这是导致下划线的原因:} .entry a, .secondaryColumn a, #commentsContainer h3 a, .commentlist .comment-author a { border-bottom: 1px solid #ddd; color: #3c6c92; font-weight: bold;