Php 如果链接是PDF文件,则相应地设置样式

Php 如果链接是PDF文件,则相应地设置样式,php,css,wordpress,if-statement,hyperlink,Php,Css,Wordpress,If Statement,Hyperlink,我正在为一个客户开发一个网站,他是一个考试委员会。他们有许多内容页,其中包含教学大纲的摘要详细信息,并且需要从文本中直接链接到PDF教学大纲文件。 还有一个页面仅用于PDF文件,我目前正在WordPress中创建这些自定义帖子类型,但它们有自己的图标设置,我不希望受到我将要描述的PHP规则的影响。 这是一个PHP问题,而不是WordPress问题,所以不要担心 假设我有一个链接,新的教学大纲。有了WordPress,如果不了解HTML,就无法向链接添加类,而在我的客户机及其老员工的情况下,HTM

我正在为一个客户开发一个网站,他是一个考试委员会。他们有许多内容页,其中包含教学大纲的摘要详细信息,并且需要从文本中直接链接到PDF教学大纲文件。 还有一个页面仅用于PDF文件,我目前正在WordPress中创建这些自定义帖子类型,但它们有自己的图标设置,我不希望受到我将要描述的PHP规则的影响。 这是一个PHP问题,而不是WordPress问题,所以不要担心

假设我有一个链接,新的教学大纲。有了WordPress,如果不了解HTML,就无法向链接添加类,而在我的客户机及其老员工的情况下,HTML是不存在的。他们将看到如何使用WordPress post或页面编辑器中的add Media(添加媒体)按钮向PDF文件添加链接,这将简单地创建指向.PDF文件的链接。这里的问题是,它只是一个链接,客户端希望用户立即知道它是一个PDF文件,而不是一个页面,以便更容易找到相关的教学大纲文件。因此,我建议创建一个规则,在链接到.pdf文件的任何链接旁边添加一个.png图标,它也会改变链接的颜色

有人知道我怎样才能做到这一点吗?我一直在寻找自动完成这一功能的WordPress插件,但它们要么已经过时,要么很难使用,也就是说,员工需要HTML知识来重新设计链接的样式

我在网上找到了这个代码片段,但不知道它的方向是否正确

$whitelist = array(".pdf");

foreach ($whitelist as $item) {

    if (preg_match("/$item\$/i", $_FILES['uploadfile']['name'])) {

    }
    else {

        redirect_to("index.php");
    }
}
想法?

试试这个:

将此代码添加到functions.php文件中

添加“媒体过滤器”“发送到编辑器”“我的过滤器”“pdf”,20,3

function my_filter_pdf($html, $id) {
    $attachment = get_post($id); //fetching attachment by $id passed through

    $mime_type = $attachment->post_mime_type; //getting the mime-type
    if ($mime_type == 'application/pdf') { //checking mime-type
        $src = wp_get_attachment_url( $id );

        $html = '<a href="'.$src.'" class="any-class-for-pdf-files">File</a>';
        return $html; // return new $html    
    }
        return $html;
}
这是一个函数,当您将pdf文件插入帖子时,它将向.pdf锚定标记文件添加一个类。

尝试以下操作:

将此代码添加到functions.php文件中

添加“媒体过滤器”“发送到编辑器”“我的过滤器”“pdf”,20,3

function my_filter_pdf($html, $id) {
    $attachment = get_post($id); //fetching attachment by $id passed through

    $mime_type = $attachment->post_mime_type; //getting the mime-type
    if ($mime_type == 'application/pdf') { //checking mime-type
        $src = wp_get_attachment_url( $id );

        $html = '<a href="'.$src.'" class="any-class-for-pdf-files">File</a>';
        return $html; // return new $html    
    }
        return $html;
}

这是一个函数,当您将pdf文件插入帖子时,它将向.pdf锚定标记文件添加一个类。

这只需CSS即可完成,它支持所有主要浏览器,包括IE7+。不需要添加任何额外的类或元素

下面的CSS将指向指向.pdf的任何链接,更改链接颜色,给它一些左填充,并在创建的空间中应用背景图像:

a[href$=".pdf"] {
    background: url(images/pdf-icon.png) no-repeat 0 50%;
    padding-left: 25px;
    color: red;
}

演示:

这只需CSS即可完成,它支持包括IE7+在内的所有主要浏览器。不需要添加任何额外的类或元素

下面的CSS将指向指向.pdf的任何链接,更改链接颜色,给它一些左填充,并在创建的空间中应用背景图像:

a[href$=".pdf"] {
    background: url(images/pdf-icon.png) no-repeat 0 50%;
    padding-left: 25px;
    color: red;
}

演示:

使用@tw16的答案提供了一种简单而类似的方法来使用字体图标,而不是静态图像。对于希望使用Fontawesome或其他支持unicode的图标库的用户,请尝试以下方法:

/* MIME TYPE ICONS */
a[href$=".pdf"]::after {
  font-family: "fontawesome";
  content: "\0020\f1c1";
  color: inherit
}
a[href$=".doc"]::after {
  font-family: "fontawesome";
  content: "\0020\f1c2";
  color: inherit
}
a[href$=".xls"]::after {
  font-family: "fontawesome";
  content: "\0020\f1c3";
  color: inherit
}
当然,您可以使用::before或::after伪类,这取决于您希望图标放置在左侧或右侧的位置


感谢tw16对这一点的简化方法

使用@tw16的答案提供了一种简单而类似的方法来使用字体图标,而不是静态图像。对于希望使用Fontawesome或其他支持unicode的图标库的用户,请尝试以下方法:

/* MIME TYPE ICONS */
a[href$=".pdf"]::after {
  font-family: "fontawesome";
  content: "\0020\f1c1";
  color: inherit
}
a[href$=".doc"]::after {
  font-family: "fontawesome";
  content: "\0020\f1c2";
  color: inherit
}
a[href$=".xls"]::after {
  font-family: "fontawesome";
  content: "\0020\f1c3";
  color: inherit
}
当然,您可以使用::before或::after伪类,这取决于您希望图标放置在左侧或右侧的位置


感谢tw16对这一点的简化方法

您的客户端将从“添加媒体”按钮向中添加.pdf文件?您想在.pdf文件链接中添加一些类吗?您的客户端将从“添加媒体”按钮向中添加.pdf文件吗?你想在这个.pdf文件链接中添加一些类吗?如何阻止这个类出现在一个带有链接的图像正在逃离我的视线之后。。。有什么想法吗?如何阻止这个出现在一个带有链接的图像后,我现在不知道。。。有什么想法吗?