台灣首家線上海洋生態資料庫上線啦~


這禮拜是一種提前走春的節奏,先是去參加了客戶的產品發表會、逛年貨大街、跟朋友兒子打棒球、到台中找朋友,回過神才發現一週又過去了,又到了該乖乖寫電子報的時候了,放完假電力滿滿,有許多心得不整理一下不行~

一、海洋公民科學家生物資料庫 2.0

很開心可以獲邀參加客戶的海洋生物分類會議,業主 Spark 是位潛水控,在他還沒創業之前就認識了他,這些年幫他做過不少 WordPress 客製化外掛開發,而「海洋公民科學家生物資料庫」是我 2022 年唯一的平台專案,也是投入最多時間的大型專案。

該平台媒合潛水攝影愛好者以及生物分類學家,主要目的是希望讓攝影師的大作能提供給學術單位作為台灣海洋研究的寶貴資料,攝影師不懂生物學,而生物學家不常潛水,這平台剛好作為兩者之間的溝通橋樑。

看到分類會議現場一群人盯著一隻魚研究了好久,然後在某個角落不時爆出發現特有種的歡呼聲,雖然我不懂魚,但我能想像這就是換成一群工程師發現新工具的場景,對於喜愛事物充滿熱情的興奮感,Spark 團隊創造出一個非常棒的社群!

如果你想了解更多關於這個站的開發秘辛,我下週會再寫一篇介紹文把它分享出來!

二、WP Query 作者模糊搜尋

我需要的功能是在搜尋時可以輸入關鍵字找到特定作者的文章。由於 WP_Query 預設只能用 user_iduser_nicename 去篩選文章作者,如果使用者輸入的關鍵字並非作者的精準名字就會搜尋不到。

我採用的解法是先用 WP_User_Query 找出符合條件的 user_id 後再丟進去 WP_Query 裡面當參數,這樣就能很彈性的針對作者的特定欄位來做搜尋,像是 display_nameuser_login 以及 email 等欄位進行搜尋。

在使用 WP_User_Query 可以帶入三個參數,第一個是 search,也就是要比對的關鍵字,比較特別的地方是它可以帶入萬用字元 * 來判斷比對的關鍵字是在開頭、結尾還是中間,第二個參數是 search_columns,也就是要進行比對的使用者欄位,可以用陣列帶入多個欄位。

最後是 fields,也就是查詢完成後要回傳的資料內容,由於 WP_Query 的參數可以直接吃使用者 ID 的陣列,因此直接回傳 ID 是最方便的。在取得 WP_User_Query 物件後,最後用 get_reults() 方法就能得到查詢結果。

完成程式碼可以參考這篇文章:https://oberonlai.blog/wp-user-query

三、ACF 的 JS Hook

需求是我要在刪除 Repeater 欄位的當下觸發 myCred 外掛扣點 API,也就是當點擊移除按鈕時,點選 Tooltip 裡面的刪除時觸發:

本想從前端做,但查了之後才發現原來 ACF 有很完整的 JavaScript API ,首先用 JS 判斷該頁面是否有 acf 物件,有的話就可以呼叫 addAction 方法,該方法帶有兩個參數,第一個是觸發的時機點,依照我目前的需求是 remove,第二個參數是回呼函示,帶有目前觸發物件的 $el 參數,稍後我就可以用這個物件取得欄位的值。

完整的使用範例可以參考 ACF 的官方文件:https://www.advancedcustomfields.com/resources/javascript-api/#actions-remove_field

我的實作如下:https://oberonlai.blog/acf-js-api

四、產品更新

近期終於把 LINE 登入外掛的頭像功能整合進去,現在只要使用登入就會自動取得 LINE 帳號的頭像作為網站個人帳號的顯示圖片。

一開始本來是想用 WordPress 內建的 Gravatar 來做,但由於使用者的頭像圖檔全都是放在 Gravatar 上面,資料庫只有紀錄預設的頭像設定而沒有存放圖檔,而 Gravatar 要透過 API 上傳頭像必須要經過 WP 後台的授權才能取得 API Key 來進行修改,但這樣就沒辦法放在商業外掛裡面來做了,如果要請每一位購買的顧客去申請 Gravatar API 這難度有點高…

如果你有特定網站要整合 Gravatar API,他們有提供 PHP SDK:https://www.phpclasses.org/browse/file/28639.html

Gravtar 這條路行不通只能換條路走,查 Codex 發現到這個勾點:pre_get_avatar_data

https://developer.wordpress.org/reference/hooks/pre_get_avatar_data/

它會在 get_avatar() 取得圖片網址前觸發,因此我就可以把它替換成 LINE 的頭像網址,基本上用 LINE 的 CDN 網址就能結案了,比較棘手的是後台的顯示,個人頁的顯示還好判斷,而我卡在列表頁:

本以為可以跟這邊跟文章列表一樣,只要替換 column 輸出的內容即可,但是使用者列表是用 manage_users_custom_column,看原始碼的寫法它只能新增欄位,無法去修改既有欄位的資料,還在想說是否要把原生欄位移掉,然後去新增一個自己的來顯示正確的頭像,看 Nextend Social Plugin 的寫法它還是有把頭像拉回來存,看來還是要比照辦理了。

覺得麻煩的當下,重新看了文件,意外發現勾點 pre_get_avatar_data 的第二個參數就是 user 相關的資料,至於具體會是什麼就要看實作這個勾點的人傳什麼進去,有以下六種類型:

  • user ID
  • Gravatar MD5 hash
  • user email
  • WP_User object
  • WP_Post object
  • WP_Comment object

因此要各別處理以取得正確的 user_id。除了 Gravatar MD5 hash 以外,我找不到該如何用它找回 user id 的方法,而我看 Nextend Social Plugin 也沒處理,之後遇到再說了。

程式碼實作參考這篇:https://oberonlai.blog/wp-avatar

五、工具分享

看了曼報在測試 Rewind 這款筆記軟體,主打再也不用整理筆記,靠著 M1 晶片的運算力把每分每秒的螢幕都節錄下來,然後用文字辨識影片內容,讓你之後可以直接進行關鍵字搜尋,實測結果目前不支援中文,只能搜尋英文內容,而且必須先將 MacOS 的語系改成英文才行:

比較麻煩的是點擊你要的結果後,它沒有辦法直接去到該關鍵字所在的軟體,因為它只是一張圖,所以你只能按圖索驥去找到它出現在哪個軟體,

它有設定項讓你控管影片存檔,他說平均一個月會用到 14GB 的空間:

目前試用 30 天,之後一個月 20 鎂,對於筆記軟體來說我覺得有點貴,再加上只是單純文字辨識,不能直接跳到特定軟體的特定區塊,要找東西的時候還是需要花時間搜尋,個人覺得用起來不太直覺,如果你想紀錄自己的工作視窗,同時也是使用 Apple 晶片的 Mac 可以嘗試看看。

-

下禮拜要來大掃除了,每年大掃除我都只求能搞定一個項目就功德圓滿了,今年的大魔王是陽台的紗窗,又破又髒,自己換光想到要用壓條就覺得超懶,想找師傅來處理又懶得把陽台門整個搬下去,看來還會拖上一陣子了XD,我們下週見!

WordPress 開發日常

Read more from WordPress 開發日常

自從 LINE Notify 終止服務後所有站長都在找尋替代方案,如果還是想在 LINE 裡面收到管理員的訂單通知,只能採用與一般顧客相同的方式,也就是申請官方帳號接收通知,雖然一樣有免費額度可以使用,但對於量大的站長來說又是一筆新的支出成本。 如果不想要新增這筆開銷,勢必要尋找其他即時通訊軟體來接收通知,像是採用 Discord 或是 Telegram,如果站長本身就沒有在使用這些軟體需要額外安裝,安裝後還需要申請開發者帳號取得金鑰,而網站這邊也要另外使用外掛或是請工程師進行串接。 難道沒有更方便、更優雅的方式來解決這個問題嗎?不僅可以在桌機上收到通知,同時還能推播到手機甚至是穿戴型裝置上,最重要的是每一則推播不會被收費、也不用擔心原本免費的方案終止服務或是漲價,而這解決方案我們在各大新聞網站都曾見過它,那就是網頁推播通知技術 ( Web Push Notification )。 外掛介紹 DWP 網站助理整合網頁推播通知,可以讓訂閱者在訂單狀態改變時收到推播訊息,支援所有平台,包含 Windows、MacOS、Android 以及 iOS...

這禮拜有幸約到網路創業家蕭上農 Fox 大大進行一對一的創業諮詢面談,從我小時候就是看著他的創業故事長大的,一直有持續在關注他分享的內容,現在自己也走在創業的這條路上,想說何不約一下已經走過這一遭的 Fox,想知道他是怎麼看 WooCommerce 外掛創業的機會。 我們談到三個大主題:OrderNotify 現況分析、創業主題的選擇、AI 浪潮下產品開發的思維。 OrderNotify 現況分析 根據我提供的銷售狀況來看,Fox 覺得這個產品在這些年的業績已經足以代表市場不夠大,目前針對的使用者族群太細了,要有使用 WooCommerce 架站又要有認真經營 LINE 官方帳號的商家數量群體本身就不夠大。 以漏斗的角度來看,這已經是最最下面的底層,業績無法有突破純粹是市場太小,如果是鎖定更大的市場,像是支援 Whatsapp 或是開發 Shopify 的 App 才有足夠大的量能讓個人開發者過活,或是要把眼光放在海外而非僅限於台灣,朝著漏斗的上方移動才行。 我用 Built with 查了一下台灣 WooCommerce 的網站數量是 10,610,以我目前的顧客數量 120...

創業是一場實驗,可以依照自己的想法去實踐的過程非常有趣,雖然免不了許多挫折失敗的時刻,但只要一想到令人興奮的點子又是希望破表。我從這篇文章開始紀錄創業的過程,希望一年後回過頭來看可以回憶起一年前的自己都在想些什麼五四三XD 上一次完全沒有案件收入的狀況要回朔到十幾年前,當時不知道該怎麼找案子,手邊的生活急用金只有兩個月,在時間壓力下只能重回職場先求溫飽。這一次從接案者的身份「離職」,為此我做足了準備,希望在資金燒完前可以找到合適自己的商業模式, 三月份我將心力放在產品的更新與行銷上,做了很多以前沒做過的事,處處充滿了新鮮感,但也因為都沒做過,不曉得哪些有效哪些沒效,所以打算以後在每個月的最後一週寫一篇創業日記,紀錄做對跟做錯了哪些事,算是幫自己回顧這一路上的過程。 第一個月設定的主要目標:行銷,在與 ChatGPT 諮詢過後,它給我的建議是公司產品是有市場的,但因為曝光量不足,所以營收無法提升,要增加曝光度為首要目標。剛好這個月 LINE Notify 停用,就決定以這個切入點來強化產品功能並撰寫行銷內容。 三月份的總工作時數為 41.12 小時,加上客服時間總計約 48...