将php函数应用于短代码

时间:2017-09-07 00:47:04

标签: php wordpress shortcode

我首先要说的是我对编码很新,所以我可能会以错误的方式解决这个问题。

基本上我有以下php函数将url更改为url的页面标题而不是简单的web地址。因此,它不会像www.google.com那样显示为Google。

<?php
function get_title($url){
  $str = file_get_contents($url);
  if(strlen($str)>0){
    $str = trim(preg_replace('/\s+/', ' ', $str)); // supports line breaks inside <title>
    preg_match("/\<title\>(.*)\<\/title\>/i",$str,$title); // ignore case
    return $title[1];
  }
} 
?>

这很棒,但要实现这一点,我必须使用下面的代码。

echo get_title("http://www.google.com/");

然而,这仅适用于预定义的URL。我现在在我的网站上设置的是html小部件中的短代码。

<a href='[rwmb_meta meta_key="link_1"]'>[rwmb_meta meta_key="link_1"]</a>

此短代码显示用户在Wordpress后端输入的URL /链接,并将其作为链接显示在前端。但是我想将 get_title函数应用于上面的短代码,而不是网页地址,而是显示页面标题。

这可能吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

来自您可以使用parse_url($url, PHP_URL_HOST);

的链接的网址名称

更简单的方法是拥有一组链接,例如

$links[] = 'some1 url here';
$links[] = 'some2 url here';

然后使用函数循环你的$ links数组。

foreach($links as $link)get_title($link);

https://metabox.io/docs/get-meta-value/

尝试:

$files = rwmb_meta( 'info' ); // Since 4.8.0
$files = rwmb_meta( 'info', 'type=file' ); // Prior to 4.8.0

if ( !empty( $files ) ) {
    foreach ( $files as $file ) {
        echo $file['url'];
    }
}