wp-go/app/theme/wp/siteicon.go

42 lines
1.3 KiB
Go
Raw Normal View History

2023-03-01 05:17:12 +00:00
package wp
2023-02-16 11:03:31 +00:00
import (
"fmt"
2023-05-04 12:37:06 +00:00
"github.com/fthvgb1/wp-go/app/pkg/cache"
"github.com/fthvgb1/wp-go/app/wpconfig"
2023-02-16 11:03:31 +00:00
"github.com/fthvgb1/wp-go/helper/slice"
str "github.com/fthvgb1/wp-go/helper/strings"
"strings"
)
2023-07-04 15:36:25 +00:00
var iconSizes = []string{"site_icon-270", "site_icon-32", "site_icon-192", "site_icon-180"}
2023-02-16 11:03:31 +00:00
func CalSiteIcon(h *Handle) (r string) {
id := str.ToInteger[uint64](wpconfig.GetOption("site_icon"), 0)
2023-02-16 11:03:31 +00:00
if id < 1 {
return
}
icon, err := cache.GetPostById(h.C, id)
if err != nil || icon.AttachmentMetadata.File == "" {
return
}
m := strings.Join(strings.Split(icon.AttachmentMetadata.File, "/")[:2], "/")
2023-07-04 15:36:25 +00:00
size := slice.FilterAndMap(iconSizes, func(t string) (string, bool) {
2023-02-16 11:03:31 +00:00
s, ok := icon.AttachmentMetadata.Sizes[t]
if !ok {
return "", false
}
switch t {
case "site_icon-270":
return fmt.Sprintf(`<meta name="msapplication-TileImage" content="/wp-content/uploads/%s/%s" />`, m, s.File), true
case "site_icon-180":
2023-02-19 05:42:07 +00:00
return fmt.Sprintf(`<link rel="apple-touch-icon" href="/wp-content/uploads/%s/%s" />`, m, s.File), true
2023-02-16 11:03:31 +00:00
default:
ss := strings.Replace(t, "site_icon-", "", 1)
return fmt.Sprintf(`<link rel="icon" href="/wp-content/uploads/%s/%s" sizes="%sx%s" />`, m, s.File, ss, ss), true
}
})
r = strings.Join(size, "\n")
return
}