解决 WordPress 主题结构化改造熊掌号获取不到通过外链设置题图地址的方法

这篇文章针对有使用外链设置题图功能,改造后获取不到题图地址的主题

本站使用的 C7V5 主题就有使用外链设置题图的功能,而且我也改造熊掌号了,但是通过外链设置的题图居然获取不到

之前的解决方式是通过后台上传题图,其他的直接上传服务器,然后使用 COS 插件去同步到腾讯云存储

后台上传图片,是占用 ID 的,WordPress 的这一点槽点十足

看了一下之前的代码,它是优先获取文章中的三张图,否则依次获取自定义图片、特色图、文章首图

按理说代码逻辑是对的,没有任何问题,就是拿不到图

来看一下之前的改造代码

if( $values = get_post_custom_values("thumb") ) { //输出自定义域图片地址
    $values = get_post_custom_values("thumb");
    $src = $values [0];
}

打印这个$values肯定是为空的,所以肯定获取不到

看一下get_post_custom_values()这个函数,用于返回文章的自定义字段值的一个函数

因为自定义字段分为,键值 keys 和自定义字段值 values ,有些时候我们需要单独获取这两个值

所以 WordPress 中就派生出了get_post_custom_values()get_post_custom_keys()两个函数

get_post_custom_values()用于获取当前文章的指定自定义字段的值,并以数组形式返回

get_post_custom_keys()用于获取当前文章所有的自定义字段的键值

了解了函数是什么作用,就来找一下这个键值,或者去问主题的作者

footer.php文件中底部加上以下测试代码,打印一下自定义字段看一下

<?php var_dump(get_post_custom_keys()); ?>

刷新页面,看最底下就有类似于下面这样,然后删掉上面的代码

array(4) {
    [0]=> string(10) "_edit_last"
    [1]=> string(5) "cover"
    [2]=> string(12) "Fanly_Submit"
    [3]=> string(10) "_edit_lock"
}

很明显是第二个 cover 啊,拿过去复制粘贴,测试,成功了就是这个 😆

就是替换掉上面代码中的 thumb

if( $values = get_post_custom_values("cover") ) { //输出自定义域图片地址
    $values = get_post_custom_values("cover");
    $src = $values [0];
}

还有一种,没有题图,我设置了默认图片再加上一个判断

// 没有封面图获取默认图片
if (empty($src)) {
    $src = c7v5_get_post_cover();
}

这个就是要主题函数支持了,具体的看你的主题吧

17 条评论

发表评论

*