Elementor作者页无facebook_handle元数据时隐藏对应图标问题求助
问题原因
- 核心错误是
get_the_author_meta()函数的传参错误:该函数第二个参数需要传入用户ID,你传入true会导致无法正确读取对应作者的元字段,所以$facebook变量永远为空,导致CSS隐藏代码始终输出。 - 补充问题:
wp_headhook执行时如果不在主循环内,直接调用get_the_author_meta()默认也拿不到正确的作者ID,需要手动获取当前页面对应的作者ID。
修正后代码
// 无facebook_handle时隐藏对应图标 function facebook_icon_display() { $author_id = 0; // 单篇文章页获取当前文章作者ID if (is_singular('post')) { global $post; $author_id = $post->post_author; } // 作者存档页获取当前存档的作者ID if (is_author()) { $author_id = get_queried_object_id(); } if ($author_id) { $facebook = get_the_author_meta('facebook_handle', $author_id); if (empty($facebook)) { echo '<style type="text/css">#facebook_icon {display: none;}</style>'; } } } add_action( 'wp_head', 'facebook_icon_display' );
可选优化
如果后续发现ID选择器不生效(Elementor可能给动态元素加随机后缀),可以给Facebook图标加自定义CSS类,比如custom-facebook-icon,然后把CSS选择器换成.custom-facebook-icon即可。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

