重写WordPress中$ATTS SHORTCODE_ATTS内的类

时间:2019-10-27 作者:jade newport

我有一个插件,我需要调整一个函数。特别是\'class\' => \'\'.

这是插件中的代码:

function message_to( $atts, $content = null, $tag = \'\' ) {
    $atts = shortcode_atts( array(
        \'to\'        => \'{current-post-author}\',
        \'subject\'   => \'{current-post-title}\',
        \'text\'      => __( \'Contact\',\'front-end-pm\' ),
        \'class\'     => \'fep-button\',
        \'fep_mr_to\' => false, // Comma separated list of user ids (used in PRO version)
    ), $atts, $tag );
    if ( \'{current-post-author}\' == $atts[\'to\'] ) {
        $atts[\'to\'] = get_the_author_meta( \'user_nicename\' );
    } elseif ( \'{current-author}\' == $atts[\'to\'] ) {
        if ( $nicename = fep_get_userdata( get_query_var( \'author_name\' ), \'user_nicename\' ) ) {
            $atts[\'to\'] = $nicename;
        } elseif ( $nicename = fep_get_userdata( get_query_var( \'author\' ), \'user_nicename\', \'id\' ) ) {
            $atts[\'to\'] = $nicename;
        }
        unset( $nicename );
    } elseif ( \'{um-current-author}\' == $atts[\'to\'] && function_exists( \'um_profile_id\' ) ) {
        $atts[\'to\'] = fep_get_userdata( um_profile_id(), \'user_nicename\', \'id\' );
    } else {
        $atts[\'to\'] = esc_html( $atts[\'to\'] );
    }
    if ( false !== strpos( $atts[\'subject\'], \'{current-post-title}\' ) ) {
        $atts[\'subject\'] = rawurlencode( str_replace( \'{current-post-title}\', get_the_title(), $atts[\'subject\'] ) );
    } elseif ( ! empty( $atts[\'subject\'] ) ) {
        $atts[\'subject\'] = rawurlencode( $atts[\'subject\'] );
    } else {
        $atts[\'subject\'] = false;
    }
    if ( empty( $atts[\'to\'] ) && empty( $atts[\'fep_mr_to\'] ) ) {
        return \'\';
    }
    return \'<a href="\' . fep_query_url( \'newmessage\', array( \'fep_to\' => $atts[\'to\'], \'message_title\' => $atts[\'subject\'], \'fep_mr_to\' => $atts[\'fep_mr_to\'] ) ) . \'" class="\' . esc_attr( $atts[\'class\'] ) . \'">\' . esc_html( $atts[\'text\'] ) . \'</a>\';
}
原始函数指定类:

\'class\'     => \'fep-button\',
我需要换个别的via child theme:

\'class\'     => \'something-else\',

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

按照编写函数的方式,默认值在插件中是不可编辑的,因为没有过滤器挂钩来更改它们。

然而,这是短代码的一个特定“属性”。shortcode_atts() 是一个定义短代码属性(可以通过短代码本身传递)并设置其默认值的函数。只有在短代码中未指定属性时,才使用默认值。指定时,将使用该属性的传递值。

因此,如果要传递不同的类,可以在使用快捷码时传递:

[name\\u of\\u shortcode class=“其他内容”]

(注意:我使用了“name\\u of\\u shortcode”,因为您没有包含此shortcode的特定标记-请相应地编辑)

相关推荐

初学者问题:通过管理Web界面访问Functions.php以导入自定义帖子类型?

是否可以访问这些功能。php文件仅仅使用管理web界面?我正在尝试访问以前创建的(手动编码的)自定义帖子类型,我不得不跳过很多障碍,因为我无法访问函数中的代码。php文件。我已经浏览了很多帮助页面,但建议的步骤似乎总是涉及到函数。php文件(我无法访问)或使用插件中的导入/导出工具,该插件首先创建了自定义帖子类型(据我所知,没有使用任何插件)。这似乎是一个非常基本的问题,但我一辈子都想不出来。任何帮助都将不胜感激!