php使用另外php文件中的数组,如何从Wordpress中的另一个PHP文件访问数组变量? - WordPress - srcmini...

我正在添加一些自定义代码, 以通过使用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数组中, 而无需复制整个//设置和控件代码。

到目前为止, 它运行良好, 我在定制器中有四个文本字段, 可以在其中插入社交网络配置文件的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, '')) { ?>

}

这应该是使用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 Icon

foreach ($my_socialnetworks as $key => $value) {

if ( get_theme_mod($key, '')) { ?>

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值