构建一个WP站点,其中两个父类别的样式类似于两个不同的分区/站点。
我正在使用自定义徽标(在外观/自定义中设置),使用下面的功能,我可以成功地将其替换为特定页面和类别上的自定义徽标。如何还包括自定义链接而不是网站主页?
function change_logo_on_category($html) {
if (is_page($page = \'136\'))
$html = preg_replace(\'/<img(.*?)\\/>/\', \'<img src="http://customlogo.png" class="custom-logo" alt="" itemprop="logo" />\', $html);
elseif ( in_category( 29 ) || post_is_in_descendant_category( 29 ))
$html = preg_replace(\'/<img(.*?)\\/>/\', \'<img src="http://customlogo.png" class="custom-logo" alt="" itemprop="logo" />\', $html);
return $html;
}
add_filter(\'get_custom_logo\',\'change_logo_on_category\');
SO网友:cjbj
您并没有使用get_custom_logo
滤器正如您从源代码中看到的$html
是传递给它的,但是$blog_id
. 您可以使用后者来执行preg_replace
在这样的链接上:
add_filter (\'get_custom_logo\',\'wpse305624_change_logo_link\',10,2);
function wpse305624_change_logo_link ($html,$blog_id) {
$homelink = get_home_url ();
$bloglink = get_permalink ($blog_id); // or anything else, for instance the blogs\'s parent
$html = preg_replace ($homelink,$bloglink,$html);
return $html;
}
顺便说一下,您也可以在
get_theme_mod
(在开始时调用
get_custom_logo
) 首先修改返回的图像id,这样就不必执行
preg_replace
之后不幸的是,我没有看到一种同样优雅的方式来操纵url。