將製作ejcees(中國象棋打譜程式)

分享和讨论Javascript相关的话题
回复
头像
ejsoon
一枝独秀
一枝独秀
帖子: 5365
注册时间: 2022年 11月 18日 17:36
为圈友点赞: 176 次
被圈友点赞: 204 次
联系:

Re: 將製作ejcees(中國象棋打譜程式)

帖子 ejsoon »

在wordpress中,如何寫php,拿到指定的媒體庫文件的地址?即使這個文件改名改路徑也能拿到?

代码: 全选

在 WordPress 中,要確保「即便檔案改名或路徑變動」依然能拿到正確的地址,唯一的準則就是:**永遠使用 Attachment ID(附件 ID)**。

WordPress 的媒體庫文件本質上是一種名為 `attachment` 的 **Post Type**。當你在後台修改圖片的標題或透過外掛重新命名檔案時,其 ID 是永遠不變的。

以下是實現這一點的幾種最佳實踐:

---

### 1. 最核心的方法:`wp_get_attachment_url()`

只要你有該文件的 ID,無論它的實體路徑怎麼變(例如從 `/2023/01/` 移到 `/2024/05/`),這個函式都能動態從資料庫中抓取當前最新的 URL。

```php
// 假設附件 ID 為 520
$attachment_id = 520;
$url = wp_get_attachment_url($attachment_id);

if ($url) {
    echo $url;
}
```
https://ejsoon.vip/
弈趣極光:享受思維樂趣
头像
ejsoon
一枝独秀
一枝独秀
帖子: 5365
注册时间: 2022年 11月 18日 17:36
为圈友点赞: 176 次
被圈友点赞: 204 次
联系:

Re: 將製作ejcees(中國象棋打譜程式)

帖子 ejsoon »

如何在wordpress的媒體庫中顯示文件大小?

代码: 全选

要在 WordPress 媒體庫中顯示文件大小,最簡單且不依賴外掛的方法是透過 PHP 代碼。這可以讓你直接在媒體庫的列表視圖中看到每個檔案佔用的空間(例如 1.2 MB)。

你可以將以下代碼添加到主題的 `functions.php` 檔案中:

---

### PHP 代碼實現

```php
/**
 * 在媒體庫列表增加「大小」欄位標題
 */
add_filter('manage_media_columns', 'add_file_size_column');
function add_file_size_column($columns) {
    $columns['file_size'] = '檔案大小';
    return $columns;
}

/**
 * 抓取並顯示每個媒體文件的實際大小
 */
add_action('manage_media_custom_column', 'display_file_size_column', 10, 2);
function display_file_size_column($column_name, $post_id) {
    if ($column_name === 'file_size') {
        // 獲取檔案路徑
        $file_path = get_attached_file($post_id);
        
        if (file_exists($file_path)) {
            // 獲取位元組數並轉換為易讀格式 (KB, MB)
            $size = filesize($file_path);
            echo size_format($size); 
        } else {
            echo '未知';
        }
    }
}

/**
 * 讓「大小」欄位支援點擊排序
 */
add_filter('manage_upload_sortable_columns', 'make_file_size_column_sortable');
function make_file_size_column_sortable($columns) {
    $columns['file_size'] = 'file_size';
    return $columns;
}
```

---

### 代碼功能詳解:

1.  **`manage_media_columns`**: 這會在媒體庫的表格標題列插入一個新的「檔案大小」欄位。
2.  **`get_attached_file($post_id)`**: 這是關鍵。它會根據我們之前聊過的 **Attachment ID** 找到伺服器上的實體路徑。
3.  **`size_format()`**: 這是 WordPress 內建的函數,會自動幫你把 $1048576$ bytes 轉換成 `1 MB` 這種人類看得懂的格式,非常方便。
4.  **排序功能**: 最後一段代碼讓你可以點擊標題,按檔案大小進行升冪或降冪排列,方便找出佔用空間的大檔案。

---

### 如何查看效果?

1.  保存 `functions.php` 後,進入後台 **媒體 > 媒體庫**。
2.  **重要:** 必須切換到 **「列表視圖 (List View)」**(點擊左上角的清單圖示),而不是預設的網格圖示。
3.  你就會看到多出一欄「檔案大小」。

### 補充:如果不想寫代碼?
如果你偏好使用外掛,可以搜尋 **"Filesize in Media Library"** 或 **"Admin Columns"**,這些外掛也提供類似的功能,並支援更多自定義欄位。

你目前是想清理網站空間,還是單純想在選取檔案時有個參考?
https://ejsoon.vip/
弈趣極光:享受思維樂趣
回复

在线用户

正浏览此版面之用户: 没有注册用户 和 1 访客