您可以使用class_exists来检查插件是否处于活动状态。 (观看下面的视频,该视频测试了本教程中的代码示例)。
在主题中使用插件中的PHP类时,需要执行此操作。
如果你不这样做’在主题中使用插件功能时,请使用class_exists’如果插件未激活,则在站点上加载页面时会出现错误。
让我们来看一个使用非常流行的WordPress插件“高级自定义字段”中的代码的工作示例。
在主题中使用class_exists
以下代码检查ACF插件是否处于活动状态。
将此代码与使用ACF特定功能(如get_field();)的代码段一起使用。
如果你不这样做’t,如果在ACF插件未激活时将其添加到主题文件中,则代码将导致错误。
以下代码通过查找acf类来检查ACF插件是否处于活动状态。如果acf类不存在,则return语句立即结束当前函数的执行。
请参阅以下子标题下的完整功能,其中包括class_exists:修复程序。
if ( ! class_exists( 'acf' ) )
return;
这里’这是一个完整的工作示例,您可以将其添加到您的子主题themes.php中,并进行自我测试,您可以在下面的视频演示中看到它的完成。
影片示范
该视频演示了 class_exists函数 在主题中使用插件特定功能以避免在停用插件时出现主题错误的情况下,在创世纪中会出现问题。
程式码范例
如果您在ACF中创建了一个名为after_header的字段并激活了插件,则以下代码将正常工作。
add_action( 'genesis_before_loop', 'test_acf_function' );
function test_acf_function() {
echo get_field( 'after_header' );
}
但是,当您停用ACF插件时会发生什么?
致命错误:调用未定义的函数get_field()
您会收到致命错误,因为get_field是ACF文件中编码的函数,因此它赢得了’当ACF插件处于非活动状态时,在主题中使用该功能时将无法正常工作。
修复
在主题中使用插件功能时,请务必添加对插件的检查。
这里’s是更新的代码,其中包括您猜到的class_exists。
add_action( 'genesis_before_loop', 'test_acf_function' );
function test_acf_function() {
if ( ! class_exists( 'acf' ) )
return;
echo get_field( 'after_header' );
}
上面的代码检查class_exists for the ACF plugin otherwise returns false
其他编码方法
另一种使用 三元运算符:
add_action( 'genesis_before_loop', 'test_acf_function' );
function test_acf_function() {
$output = class_exists( 'acf' ) ? get_field( 'after_header' ) : get_post_meta( get_the_ID(), 'after_header', true );
echo $output;
}
上面的代码检查‘acf’存在类,当ACF插件处于活动状态时为true。
如果ACF插件处于活动状态,则 $output
变量 uses the ACF function get_field( 'after_header' )
as its value.
Otherwise, the $output
变量 equals get_post_meta( get_the_ID(), 'after_header', true );
which is a 自定义字段的WordPress功能 并始终适用于任何主题。
其他例子
如果你’在主题中重新使用WooCommerce功能,您’ll还想像这样检查WooCommerce插件是否处于活动状态:
if ( ! class_exists( 'WooCommerce' ) )
return;
您可以在许多 新的StudioPress子主题 编码后即可与WooCommerce插件一起使用,并包括一个专用的woocommerce文件夹。
发表评论
你一定是 登录 to post a comment.