将核心修改转换为插件

时间:2017-02-28 作者:Joel G Mathew

我需要在单击电子邮件中的确认链接时更改网站上显示给用户的两个字符串(而不是修改发送的电子邮件)。我做了以下修改,效果很好:

    --- wp-activate.bak        2017-02-28 13:01:03.883175677 +0530
    +++ wp-activate.php     2017-02-28 13:47:35.000000000 +0530
    @@ -13,6 +13,10 @@ require( dirname(__FILE__) . \'/wp-load.p

     require( dirname( __FILE__ ) . \'/wp-blog-header.php\' );

    +// Changes the header
    +
    +require( dirname(__FILE__) . \'/wp-custommsg.php\' );
    +
     if ( !is_multisite() ) {
            wp_redirect( wp_registration_url() );
            die();
    @@ -128,7 +132,7 @@ get_header( \'wp-activate\' );
                            $url = isset( $result[\'blog_id\'] ) ? get_home_url( (int) $result[\'blog_id\'] ) : \'\';
                            $user = get_userdata( (int) $result[\'user_id\'] );
                            ?>
    -                       <h2><?php _e(\'Your account is now active!\'); ?></h2>
    +                       <h2><?php _e($active_page_title); ?></h2>

                            <div id="signup-welcome">
                                    <p><span class="h3"><?php _e(\'Username:\'); ?></span> <?php echo $user->user_login ?></p>
    @@ -147,7 +151,7 @@ get_header( \'wp-activate\' );
                            <?php else: ?>
                                    <p class="view"><?php
                                            /* translators: 1: login URL, 2: network home URL */
    -                                       printf( __( \'Your account is now activated. <a href="%1$s">Log in</a> or go back to the <a href="%2$s">homepage</a>.\' ), network_site_url( \'wp-login.php\', \'login\' ), network_home_url() );
    +                                       printf( __( $active_page_msg ), network_site_url( \'wp-login.php\', \'login\' ), network_home_url() );
                                    ?></p>
                            <?php endif;
                    }
和wp custommsg。php包含:

<?php

$active_page_title = \'My custom title\';
$active_page_msg = \'My custom message\';
?>
我试着读一些关于钩子和动作的书,但似乎无法理解它们。如何将更改转换为插件,使其在wordpress版本更新后仍然有效?

为了澄清,这些修改位于wp activate中php内容之外的html代码中。据我所知,php没有挂钩。

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

我还没有做过这种钩子,但我确实在wordpress codex中找到了这一页

https://codex.wordpress.org/Function_Reference/wpmu_welcome_user_notification

他们确实向你解释了如何修改激活和通知电子邮件的内容

我将尝试在这里解释一下Wordpress动作是一种钩子。你有动作挂钩和过滤挂钩

Actions 由Wordpress中发生的特定事件触发,例如发布帖子时,您可以触发自定义操作。链接到处理所需操作的函数。这里的一个想法是,例如,您希望在更新特定帖子时更新第三方数据库,您可以将其链接到操作。操作是Wordpress的挂钩,使用add_action()

Filters 是为Wordpress定义的函数,用于在显示数据时运行数据。例如,假设您希望在不影响数据库的情况下更改帖子上的一些文本,您将使用过滤器。这样,当您更改过滤器时,就不必编辑帖子的实际数据库值。过滤器通过以下方式连接到wordpressadd_filter()

有关更多信息,请阅读本页https://codex.wordpress.org/Plugin_API这更详细地解释了挂钩。

相关推荐

Admin sidebar customization

我的新客户wordpress站点在管理侧栏中没有插件、外观或任何其他默认项。谁能告诉我这些是怎么出现的吗。该站点正在主站点的子目录中运行。它有自己的wordpress安装。主题是前面的rttheme16。提前谢谢。