从帖子内容中获取第一个URL

时间:2019-04-17 作者:caffeinehigh

基本上我想做的就是,如果帖子格式是“链接”,而不是从博客索引链接到帖子,链接到粘贴在帖子内容中的链接。

在我的索引中。php我有:

<h3>
 <a href="<?php get_post_format() == \'link\' ? some_function_here() : the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
</h3>
显然,某些\\u function\\u here()是不真实的。我确信我在Wordpress codex上看到了一个函数可以做到这一点(从帖子中提取第一个链接),但我现在找不到它。

1 个回复
SO网友:Faye

I think this question 可能会把你引向正确的方向。

如果链接断开,下面是Jon Fabry 在那条线上。

$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\'];
}
这将获取内容中提供的每个链接。您可以添加一个计数器或一个true false条件来仅挂接第一个计数器。

所以最终的代码应该是

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

                } else {
                // ignore it
                }
        }
        $post_link = $link[\'href\'];
}