我正在添加一些自定义代码, 以通过使用Customize API在Wordpress主题中动态显示社交网络图标。
阻止其按预期运行的唯一问题是, 我需要找到一种从另一个文件访问数组变量的方法, 而不仅是从声明它的位置访问。
【如何从WordPress中的另一个PHP文件访问数组变量()】首先, 我将一些代码添加到functions.php中, 以在主题定制器中创建一些文本字段, 如下所示:
function my_customizer_options($wp_customize) {// Section
$wp_customize ->
add_section ( 'my_social', array(
'title' =>
__('Social', 'my-theme'), 'description' =>
__('Social Network profiles', 'my-theme'), 'priority' =>
20, )
);
// Social Networks list
$socialnetworks = array(
// Social Network =>
Icon Name
'facebook' =>
'fa-facebook-f', 'linkedin' =>
'fa-linkedin-in', 'instagram' =>
'fa-instagram', 'twitter' =>
'fa-twitter', );
// Settings and controls
foreach ($socialnetworks as $key =>
$value) {$wp_customize ->
add_setting ( $key, array( 'default' =>
'' ) );
$wp_customize ->
add_control ( $key, array(
'type' =>
'url', 'label' =>
__(ucfirst($key), 'my-theme'), 'section' =>
'my_social', ));
}add_action( 'customize_register', 'my_customizer_options' );
这使我可以将项目随意添加到$ socialnetworks数组中, 并自动生成添加设置和控件所需的代码, 而不必通过一次又一次地写下相同的代码来手动进行操作。也就是说, 如果我需要为更多的社交网络添加更多字段, 则可以简单地将条目添加到$ socialnetworks数组中, 而无需复制整个//设置和控件代码。
到目前为止, 它运行良好, 我在定制器中有四个文本字段, 可以在其中插入社交网络配置文件的URL。现在, 我需要从主题模板文件中访问这些值。
这是我的header.php文件的一部分, 我要在其中显示链接到各个社交网络配置文件的图标:
/*
// Social Networks list
$socialnetworks = array(
// Social Network =>
Icon Name
'facebook' =>
'fa-facebook-f', 'linkedin' =>
'fa-linkedin-in', 'instagram' =>
'fa-instagram', 'twitter' =>
'fa-twitter', );
*/// Social Iconforeach ($my_socialnetworks as $key =>
$value) {if ( get_theme_mod($key, '')) { ?>
<
a href="http://www.srcmini.com/<
?php echo get_theme_mod($key,'') ?>
" target="_blank">
<
i class="fab <
?php echo $value ?>
">
<
/i>
<
/a>
<
?php };
}
这应该是使用get_theme_mod()WP内置函数来检索在定制器中插入的值, 并为每个插入的URL动态添加图标和相对链接。
问题是, 为了使其能够正常工作, 我需要取消对$ socialnetworks数组的注释, 并且基本上还从header.php内部重新定义它, 而我想从functions.php访问它。
一个可能的问题是$ socialnetworks是在my_customizer_options()函数中定义的;我试图将其移到函数本身之前, 但是这样即使在不解决任何问题的情况下, 它甚至破坏了functions.php中的代码。
我需要正确的位置和正确的方法来一次定义$ socialnetworks并能够从主题的任何文件访问它, 我应该如何修改我的代码才能实现此目的?
#1正如用户在注释中建议的那样, 我将数组放入函数中, 现在我可以通过调用函数从任何地方访问数组。
这是修改后的代码:
functions.php:
// Social Networks list
function my_socialnetworks() {
$socialnetworks = array(
// Social Network =>
Icon Name
'facebook' =>
'fa-facebook-f', 'linkedin' =>
'fa-linkedin-in', 'instagram' =>
'fa-instagram', 'twitter' =>
'fa-twitter', );
return $my_socialnetworks;
}function my_customizer_options($wp_customize) {// Section
$wp_customize ->
add_section ( 'my_social', array(
'title' =>
__('Social', 'my-theme'), 'description' =>
__('Social Network profiles', 'my-theme'), 'priority' =>
20, )
);
$my_socialnetworks = my_socialnetworks();
// Settings and controls
foreach ($socialnetworks as $key =>
$value) {$wp_customize ->
add_setting ( $key, array( 'default' =>
'' ) );
$wp_customize ->
add_control ( $key, array(
'type' =>
'url', 'label' =>
__(ucfirst($key), 'my-theme'), 'section' =>
'my_social', ));
}add_action( 'customize_register', 'my_customizer_options' );
和header.php:
$my_socialnetworks = my_socialnetworks();
// Social Iconforeach ($my_socialnetworks as $key =>
$value) {if ( get_theme_mod($key, '')) { ?>
<
a href="http://www.srcmini.com/<
?php echo get_theme_mod($key,'') ?>
" target="_blank">
<
i class="fab <
?php echo $value ?>
">
<
/i>
<
/a>
<
?php };
}
推荐阅读
- 如果它是WordPress的首页,如何将类添加到body元素()
- WordPress数组如何在后台工作()
- 如何使用自定义分类(产品,类别,用户,自定义帖子类型)进行搜索,使用没有任何插件的功能搜索WordPress
- 如何在WordPress中创建响应式图像轮播和幻灯片自定义帖子类型内容
- 你如何正确地向WordPress Customizer添加图像控件()
- 你如何链接到帖子作者的个人资料页面()
- 你如何根据使用它的帖子数量来停用wordpress帖子中自定义字段的值()
- web技术分享| webRTC 媒体流录制
- python中SMTPAuthenticationError:解决方法