如何在自定义短代码中以 URL 作为参数读取外部页面的标题?

我想显示在我的自定义短代码插件中作为参数给出的 URL 页面的标题(例如:https://www.google.it/)。这是我的代码:

function shortcode_out($atts) {
    $atts = shortcode_atts( array(
        'link' => '/',
        'newtab' => false
    ) , $atts);


    if ($atts['newtab'] == true)
        return '<a target=_blank href='.$atts['link'].'>'.{GET_TITLE_OF_$atts['link']}.'</a>';
    else
        return '<a href='.$atts['link'].'>'.{GET_TITLE_OF_$atts['link']}.'</a>';
}

我怎样才能做到这一点?

炸薯条

外部网址

您将不得不抓取网页的内容,并从中抓取标题。但请注意这一点,因为它会显着降低页面的加载速度,具体取决于您尝试获取的链接数量以及他们的服务器传递内容所需的时间。

这样做还需要您使用正则表达式解析 HTML,这通常是需要避免的

这就是最终结果的样子:

function shortcode_out($atts) {
    $atts = shortcode_atts( array(
        'link'   => '/',
        'newtab' => false
    ) , $atts);

    //get the URL title
    $contents = file_get_contents($atts['link']);
    if ( strlen($contents) > 0 ) {
        $contents = trim(preg_replace('/\s+/', ' ', $contents));
        preg_match("/\<title\>(.*)\<\/title\>/i", $contents, $title);
        $site_title = $title[1];
    } else {
        $site_title = 'URL could not be found';
    }


    if ($atts['newtab'] == true)
        return '<a target=_blank href='.$atts['link'].'>'.$site_title.'</a>';
    else
        return '<a href='.$atts['link'].'>'.$site_title.'</a>';
}

内部网址

如果您想获取内部 URL,那么实际上有一个 WordPress 功能可以为您处理:url_to_postid(). 获得帖子 ID 后,您可以get_the_title()像这样检索帖子标题:

$post_id    = url_to_postid($url);
$title      = get_the_title($post_id);

这就是最终结果的样子:

function shortcode_out($atts) {
    $atts = shortcode_atts( array(
        'link'   => '/',
        'newtab' => false
    ) , $atts);

    //get the post title
    $post_id    = url_to_postid($atts['link']);
    $title      = get_the_title($post_id);

    if ($atts['newtab'] == true)
        return '<a target=_blank href='.$atts['link'].'>'.$title.'</a>';
    else
        return '<a href='.$atts['link'].'>'.$title.'</a>';
}

url_to_postidint(0)如果它无法解析 URL,它将返回,因此如果您想格外小心,您可以随时更改$title变量以首先检查,如下所示:

$title = ($post_id ? get_the_title($post_id) : 'Post could not be found');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Django中编写以URL作为参数的自定义管理命令?

如何显示自定义页面的URL?

自定义页面的URL映射

如何使用自定义字段中的 PHP 短代码作为 Wordpress 上的 href 链接?

使用主题中的自定义URL和自定义代码创建Wordpress页面

Django - 无法将页面标题作为模板中的 url 参数传递

如何在 WooCommerce 中自定义 URL 和 Breadcrumb?

如何在下面的代码中为自定义FlatButton设置边框“较厚”?

用户个人资料页面的自定义URL

加载外部URL时如何在electorn中的mainWindow中添加自定义边栏(例如:mainWindow.loadURL(“ https://gmail.com”))

自定义Facebook共享按钮,在Wordpress中具有自定义标题,URL,图像

显示文件夹中任何URL的自定义页面的内容

如何设置自定义 url 以在页面上加载图像

如何使用JQuery从自定义输入获取URL参数

使用ModelViewSet在URL中传递自定义参数

访问自定义 ScopedRateThrottle 中的 URL 参数变量

如何在Dymola中定义记录的自定义参数?

Drupal 8:如何在树枝中获取特定页面的URL和标题

在ActiveAdmin中设置自定义页面的标题

如何在 URL 中使用带有自定义参数的 htaccess 实现 301 永久重定向?

如何在“自定义键盘”中输入自定义字体作为输入

如何在 plupload 中自定义标题

如何在Playwright中添加自定义标题

如何在排球请求中设置自定义标题

如何在Xamarin表单中自定义标题模板

如何在 Xamarin 中自定义 ContentPage 标题?

如何在ActiveAdmin gem中创建自定义页面

如何在Django中显示自定义错误页面

如何在JavaDoc中自定义“概述”页面?