在函数中使用is_plugin_active。php

时间:2012-04-13 作者:markratledge

我想用is_plugin_active 在功能内。php。

我需要把我的useragent_shortcode 内的功能is_plugin_active 因为当联系人表单7停用时,我会看到一个白色屏幕。

我已经包括在内了wp-admin/includes/plugin.php 如其他WPSE答案所示,因为这超出了管理范围,但没有运气。shortcode函数不会运行,原始的shortcode会回显到页面。

有什么想法吗?对于我想要做的事情,我的代码是否过于复杂?

4/16/12 Update: My own answer is below.

这在函数中起作用。php:

 If (in_array( \'contact-form-7/wp-contact-form-7.php\', apply_filters( \'active_plugins\', get_option( \'active_plugins\' ) ) ) ) {


function useragent_shortcode($tag) {

    if ( ! is_array( $tag ) )
        return \'\';

    $options = (array) $tag[\'options\'];
    foreach ( $options as $option ) {
        if ( preg_match( \'%^name:([-0-9a-zA-Z_]+)$%\', $option, $matches ) ) {
            $name_att = $matches[1];
        }

          $userAGENT .= $_SERVER[\'HTTP_USER_AGENT\'];
     }

     $user_agent = $userAGENT;
     $html = \'<input type="hidden" name="\' . $name_att . \'" value="\'.$user_agent.\'" />\';
     return $html;
}
wpcf7_add_shortcode(\'useragent\', \'useragent_shortcode\', true);

}

2 个回复
最合适的回答,由SO网友:markratledge 整理而成

This works:

     If (in_array( \'contact-form-7/wp-contact-form-7.php\', apply_filters( \'active_plugins\', get_option( \'active_plugins\' ) ) ) ) {

    function useragent_shortcode($tag) {

        if ( ! is_array( $tag ) )
            return \'\';

        $options = (array) $tag[\'options\'];
        foreach ( $options as $option ) {
            if ( preg_match( \'%^name:([-0-9a-zA-Z_]+)$%\', $option, $matches ) ) {
                $name_att = $matches[1];
            }

              $userAGENT .= $_SERVER[\'HTTP_USER_AGENT\'];
         }

         $user_agent = $userAGENT;
         $html = \'<input type="hidden" name="\' . $name_att . \'" value="\'.$user_agent.\'" />\';
         return $html;
    }
    wpcf7_add_shortcode(\'useragent\', \'useragent_shortcode\', true);
}
SO网友:Rutwick Gangurde

这个怎么样?

function useragent_shortcode($tag) {

    include_once( ABSPATH . \'wp-admin/includes/plugin.php\' );
    if ( is_plugin_active(\'contact-form-7/wp-contact-form-7.php\') ) {

        if ( ! is_array( $tag ) )
            return \'\';

        $options = (array) $tag[\'options\'];
        foreach ( $options as $option ) {
            if ( preg_match( \'%^name:([-0-9a-zA-Z_]+)$%\', $option, $matches ) ){
                $name_att = $matches[1];
            }
            $userAGENT .= $_SERVER[\'HTTP_USER_AGENT\'];
        }

        $user_agent = $userAGENT;
        $html = \'<input type="hidden" name="\' . $name_att . \'" value="\'.$user_agent.\'" />\';
        return $html;
    } else {
        //CF7 not found, hence do this
    }
}

wpcf7_add_shortcode(\'useragent\', \'useragent_shortcode\', true);
我对您的代码进行了一些修改,以将条件移到shortcode函数本身中。

结束

相关推荐

Functions.php错误-尝试更改主题时

在尝试替换wordpress主题后,它表示功能。主题目录中的php文件(最后一行)不正常分析错误:语法错误,意外的$end in/主题/主题名/功能。php在线1500第1500行实际上是唯一的符号?>EDIT好的,这是函数的pastebin链接。有错误的php文件http://pastebin.com/by5TtZq6p、 我想知道——既然它应该是一个现成的模板——那么它怎么可能是错误的——它应该是有效的p、 可能是因为改变wordpress的设置或使用了一些不好的插件而导致的混乱?(如perma