如果存在具有页面块名称的文件,则不显示任何其他内容

时间:2015-09-05 作者:Zacocom Zaccom

我需要在一个名为php代码小部件的wordpress小部件中添加一个php代码,该小部件只要求正确封装:

所有PHP代码必须包含在标准PHP开始和结束标记(<?php?> ) 确认并执行。

代码必须使用当前页面标题slug(我将使用页面而不是帖子)来查看上传文件夹中是否有任何页面标题slug。以当前页面标题SLUG命名的jpg图像。如果有这样的图像,则会显示:

<img src="current-page-name-slug.jpg" alt="current page title" height="image-height" width="image-width">
如您所见,它还必须为图像alt.使用当前页面标题,如果可能,检索图像高度和宽度并将其放入html部分。然而,这最后一个不是必须的,因为我可以手动调整所有图像的大小,使其保持不变。

因此,或多或少的伪代码类似于:

php start
IF file exists uploads/current-page-slug.jpg
then
<img src="current-page-name-slug.jpg" alt="current page title" height="image-height" width="image-width">
else
do nothing
php end
我读了一些关于wordpress循环的内容,我不确定当前页面的slug和标题是否可以从侧边栏小部件访问到。

请帮我一把。

更新时间:

我试过bklynM代码。它不起作用,当查看页面源代码以了解情况时,我发现:

<aside id="execphp-3" class="widget widget_execphp"><h3 class="widget-title">Image:</h3> <div class="execphpwidget"><img src="//www.yourdomain.com/wp-content/uploads/$slug" title="<?php the_title_attribute(); ?>" alt="" ></div> </aside>

(我编辑域名以保持其隐私)据我所知,该代码大多未经评估。已计算基本url,但:

$slugand

未触及。你知道插件是否阻止它工作吗。我还使用w3c总缓存。我还更新了我的问题,明确了img文件夹是固定的,图像不会以任何方式附加到帖子中,只会通过ftp批量上传到该文件夹。这是一种通过编程查看是否有与页面具有相同永久链接名称(也称为slug)的图像的方法(同样,我不使用帖子,我只使用页面)。我错过了什么。

bklinM更新:

非常感谢,这很有效。但是,它不排除没有文件的情况,因此在这些情况下会显示错误。我阅读了链接,我试图添加一个else,将其更改为if\\u file\\u exists,is\\u file,以及许多其他文件,但它们只会破坏代码。您是否知道如何更改代码,使其仅在找到该文件的图像或现有url时才起作用,以便在没有文件时不显示img html扎科姆扎科姆

2 个回复
最合适的回答,由SO网友:amespower 整理而成

EDITED ANSWER - 首先获取图像的完整文件路径,并将其存储到变量$filename中。使用file\\u exists检查图像是否存在,并输出图像及其标题。如果条件失败,则没有输出。https://codex.wordpress.org/Function_Reference/wp_upload_dir

 <?php

    global $post;
    $slug = get_post( $post )->post_name;  //get current page slug
    $image_name = $post->post_title;  //get page name
    $upload_dir = wp_upload_dir(); 
    //file_exists needs to check full file path of your hard drive instead of url:
    $filename = $_SERVER[\'DOCUMENT_ROOT\']."/wp-content/uploads/" . $slug. \'.jpg\'; 
    //echo $filename; 

    if (file_exists($filename)) {  //output only when matched
      echo \'<img src="\'. $upload_dir[\'baseurl\']."/" . $slug.\'.jpg\'.\'"  title="\'.$image_name.\'" alt="" >\';  
    } else {}

    clearstatcache();  //clear cache results of file_exists
   ?>

SO网友:Milo

get_queried_object() 将为您提供一个包含当前页面数据的对象,包括slug和title。

您可以使用下面的代码this answer 从URL获取附件ID,然后可以使用该IDget the attachment\'s metadata, 这将为您提供高度和宽度。

相关推荐

Get term by slug in Gutenberg

在古腾堡,可以使用getEntityRecord 通过术语id获取特定分类法术语数据的选择器:// Get the category term with term id = 25 const term = useSelect( ( select ) => select(\'core\').getEntityRecord( \'taxonomy\', \'category\', 25 ) ); 我的问题是,有没有办法通过使用术语slug而不是术语id来获取特定