如何更改自定义小工具的按钮文本?

时间:2019-05-01 作者:Greg

我们开发了一个具有自定义小部件类的主题。

class ams_button_widget extends WP_Widget {
...
    public function widget( $args, $instance ) { 
        $btn_text = apply_filters( \'button_text\', $instance[ \'button_text\' ] );
        $btn_link = apply_filters( \'button_link\', $instance[ \'button_link\' ] );
        $btn_color_class = apply_filters( \'button_color_class\', $instance[ \'button_color_class\' ] );

        if( isset( $args[ \'before_widget\' ] )) { echo $args[\'before_widget\']; }

        if( isset( $btn_text ) && !empty( $btn_text )) { 
            if( isset( $args[ \'before_button_text\' ] )) { echo $args[ \'before_button_text\' ]; }
?>
            <a href="<?php echo $btn_link; ?>" class="button rounded <?php echo $btn_color_class; ?>"><?php echo $btn_text; ?></a>
            <?php
            if( isset( $args[\'after_button_text\'] )) { echo $args[ \'after_button_text\' ]; }
            if( isset( $args[\'after_widget\'] )) { echo $args[ \'after_widget\' ]; }
        } // End if
...
我们有两个Button WidgetTop Bar Widgets 但我需要修改的主题是:

<section id="ams_button_widget-2" class="widget ams_button_widget"> <a href="/help-center/download-update/" class="button rounded yellow">Download  Latest Update</a></section>
我一直在搜索和阅读WordPress codex,试图找到我需要做的事情:将变量的值附加到btn_text.

Widgets 第节,本节btn_text 设置为[并且将始终为]Download Latest Update. 我有一个函数,它收集一些我想在默认值之后附加的版本信息btn_text, ie。Download Latest Update **v1.0.11(2019)**, 但我一点运气都没有。

我是修改类还是在我的functions.php 这就解决了问题,如果是这样,有人能提供一些解释吗?

感谢您的输入!

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

Widgets 第节,本节btn_text 设置为[并且将始终为]Download Latest Update. 我有一个函数,它收集一些版本信息,我想在默认值之后附加这些信息btn_text, ie。Download Latest Update **v1.0.11(2019)**

小部件有一个名为button_text 您可以利用它自定义按钮文本,而无需更改小部件class

$btn_text = apply_filters( \'button_text\', $instance[ \'button_text\' ] );

选项1:检查按钮文本是否准确Download Latest Update

如果是,则调用收集版本信息的函数&mdash;确保更改version_func 到正确的函数名称:

add_filter( \'button_text\', function( $text ){
    if ( \'Download Latest Update\' === $text ) {
        $text .= \' **\' . version_func() . \'**\';
    }

    return $text;
} );
<我建议你使用unique 按钮文本,以避免更改(或弄乱)其他按钮。。或者其他什么,因为过滤器名称是quite generic 并且可能被其他小部件应用classes或其他代码

选项2:在按钮文本内启用短代码:

add_filter( \'button_text\', \'do_shortcode\' );
创建一个短码,返回版本信息:

add_shortcode( \'my-version-func\', function(){
    return version_func(); // I\'m assuming that the function does NOT echo anything! :)
} );
在按钮文本输入(小部件管理页面上)中,添加[my-version-func] 无论你喜欢哪里;e、 g。Download Latest Update **[my-version-func]**.

选项3:修改小部件class/代码我不建议使用此选项,但无论如何,这里有一个示例:

替换此:

$btn_text = apply_filters( \'button_text\', $instance[ \'button_text\' ] );
使用此选项:

$btn_text = trim( $instance[\'button_text\'] );
if ( \'Download Latest Update\' === $btn_text ) {
    $btn_text .= \' **\' . version_func() . \'**\';
}
$btn_text = apply_filters( \'button_text\', $btn_text );

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'