这里有几个示例,介绍如何确定您在过滤器中的哪个页面,以及如何基于它返回不同的数据。
在这些示例中,我使用apply_filter()
链接到的代码的一部分,用于将自定义代码挂接到主题代码。自定义函数从接收变量apply_filter()
作为参数。
自定义函数应返回一个具有匹配类型和格式的值作为第一个参数。
在我的示例中,选项1使用页面和徽标的硬编码数组(带有图像id和图像源数组示例)。选项2假设特定于页面的徽标保存为页面post\\u meta中的整数。如果页面匹配且找到数据,则custom函数将返回自定义图像数据。该函数将第一个参数作为回退/默认值返回,表示未更改任何内容。
function my_prefix_filter_astra_replace_header_logo( $image ) {
// option 1 - logo from hard coded value
global $post;
$logos_for_pages = array(
\'page-a\' => 123,
\'page-b\' => array( // using wp_get_attachment_image_src() return format
\'/wp-content/themes/my-theme/logos/logo-b.png\', // url
100, // width
30, // height
false // is_intermediate
),
);
if ( isset( $logos_for_pages[$post->post_name] ) ) {
if ( is_int( $logos_for_pages[$post->post_name] ) ) {
$replace_logo = wp_get_attachment_image_src( $logos_for_pages[$post->post_name], \'ast-logo-size\' );
if ( false !== $replace_logo ) {
return $replace_logo;
}
} else {
return $logos_for_pages[$post->post_name];
}
}
// option 2 - logo from post meta
global $post;
$logos_for_pages = array(
\'page-a\',
\'page-b\'
);
foreach ( $logos_for_pages as $page_name ) {
if ( is_page( $page_name ) ) {
$logo_id = get_post_meta( $post->ID, \'meta_key_for_page_specific_logo\', true );
if ( $logo_id ) {
$replace_logo = wp_get_attachment_image_src( $logo_id, \'ast-logo-size\' );
if ( false !== $replace_logo ) {
return $replace_logo;
}
}
}
}
return $image;
}
add_filter( \'astra_replace_header_logo\', \'my_prefix_filter_astra_replace_header_logo\' );