尝试在我的帖子中获取所有链接

时间:2021-07-23 作者:Michael

我试图返回帖子/页面内容中的所有链接,但我不知道如何让我的regex/循环正常工作。这是我目前所拥有的,当我print_r($matches). 非常感谢您的任何建议。如果我需要提供更多细节,请告诉我。

function find_all_links() {
    // Let\'s get the posts
    $the_query = new WP_Query( array( 
        \'posts_per_page\'   => -1,  
    ) );
    if ( $the_query->have_posts() ) {

        // Start a list
        $results = \'<br><ul>\';

        // For each list item...
        while ( $the_query->have_posts() ) {

            // Get the post
            $the_query->the_post();

            // Get the post content
            $content = get_the_content();

            preg_match_all("/<a\\s[^>]*href\\s*=\\s*([\\"\\\']??)([^\\"\\\' >]*?)\\\\1[^>]*>(.*)<\\/a>/siU", $content, $matches, PREG_SET_ORDER);

            if (!empty($matches)) {
                foreach ($matches as $match) {
                    $results .= \'<li> \'.$match.\' (<a href="\'.get_the_permalink().\'" target="_blank">\' . get_the_title() . \'</a>)</li>\';
                }
            }
        }

        // End the list
        $results .= \'</ul>\';
    } else {
        // no posts found
        $results = \'No posts found.\';
    }

    // Restore original Post Data
    wp_reset_postdata();

    return $results;
}

1 个回复
SO网友:Michael

经过进一步调查,我注意到我的主题实际上是为了SEO目的用短代码替换所有锚定标签,所以内容中不再有任何链接。我可以通过替换

$content = get_the_content();

具有

$content = apply_filters( \'the_content\', get_the_content() );