[英]How to access an array variable from another PHP file in Wordpress?
我正在添加一些自定义代码,以通过使用Customize API在Wordpress主题中动态显示社交网络图标。
阻止其按预期工作的唯一问题是,我需要找到一种从另一个文件访问数组变量的方法,而不仅仅是从声明它的位置访问。
首先,我将一些代码添加到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
数组中,并自动生成添加设置和控件所需的代码,而不必通过一次又一次地写下相同的代码来手动完成。 即,如果我需要为更多社交网络添加更多字段,则可以简单地将条目添加到$socialnetworks
数组中,而无需复制整个// Settings and controls
代码。
到目前为止,它运行良好,我现在在定制器中有四个文本字段,可以在其中插入社交网络配置文件的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 Icon
foreach ($my_socialnetworks as $key => $value) {
if ( get_theme_mod($key, '')) { ?>
<a href="<?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
并能够从主题的任何文件中访问它,我应该如何修改我的代码才能实现此目的?
正如用户在注释中建议的那样,我将数组放入函数中,现在可以通过调用函数从任何地方访问数组。
这是修改后的代码:
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 Icon
foreach ($my_socialnetworks as $key => $value) {
if ( get_theme_mod($key, '')) { ?>
<a href="<?php echo get_theme_mod($key, '') ?>" target="_blank"><i class="fab <?php echo $value ?>"></i></a>
<?php };
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.