这篇文章针对有使用外链设置题图功能,改造后获取不到题图地址的主题
本站使用的 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();
}
这个就是要主题函数支持了,具体的看你的主题吧
熊掌号已经是一个趋势,大家尽量还是早点加入一下
熊掌号还要弄代码,看见代码就头晕,看来还是不用开通了,开通了也不会用。
懂得方法之后,这种问题都是小问题,特别是需要弄懂获取自定义字段的相关函数就OK了
最后到底是谁的锅?主题?WP?熊掌号?滑稽你?
哈哈哈哈
@西枫里博客 我的我的 😮
get_post_custom_values取的是自定义字段啊。这个“自定义”显然是主题定的,存的名跟取的名不一致,还能怪wp本身吗?
@大致 存的名和取的名不一样,全网都是thumb代码,用的主题不一样当然不一样咯,我说的就是解决主题不一样的方法,根据主题定
@沈唁 既然全网一样,那就应该改存的地方而不是取的地方啊。
@大致 每个主题的自定义外链不一样
@沈唁 要是没有熊掌号这种东西,当然随便写。可现在既然是百度说的算,那主题就得跟着它定得走啊。
@大致 熊掌号是熊掌号,wp是wp,怎么扯到一起的?还要wp听百度的?而且这个函数获取的就是wp默认的,跟着主题走的。而不是跟着百度走,代码也不是百度写的
@沈唁 get_post_custom_values是WP的,但是“cover”和“thumb”不是,对吧?
我又看了一遍。才发现跟熊掌号没关系,跟WP也没关系。对不起。
“cover”是主题作者写的,“thumb”是cos插件要的,两个地方改哪头都可以。cos插件应该把这个地方做成可配置项。
@大致 thumb怎么又成cos插件的了。。。你自己打印一下你主题里面的,看看是什么?这块的值是按照主题来的
@沈唁 我的主题是我自己写的,没有。我也查了官方主题twentyseventeen,根本没有外链图片这回事。一个很简单的特征,wordpress自动存的post_meta,都是下划线开头的。老外根本就不习惯用图床,thumbnail相关的一系列函数才是原生的WP的用法。默认的wp存的是_thumbnail_id,也就是你诟病的那个自增长的图片号。
冷静冷静。好好想一下WP、主题、插件之间的关系。
搜索一下你的主题,这个“cover”字段是在你的主题里的某个地方,用add_post_meta之类的函数存进去的。
或者是你的其他什么插件干的,WP本体绝对没存过”cover”这个post_meta。
问题很简单,一个地方存了“cover”,另一个地方要取“thumb”,我要说的是,这两个地方都不是wordpress本体,我认为改存的地方更合适一些,就这样。
@大致 cover是我主题的,thumb我不清楚,谢谢
这显然是主题作者的锅。其实有种从content里用正则表达式直接取第一张图的办法。
@大致 。。这跟主题有什么关系,你可以用原生啊,而且主题有封装函数