Modify php code from plugin

时间:2015-06-30 作者:1td

我想修改一个插件的php文件,该文件只有一堆if/else和echo语句。我可以通过将文件复制到子主题文件夹并更改一件小事来做到这一点,但如果主题得到更新,这些更新将不会进入复制的文件,是吗?

以下是文件的一部分:

<a class="logout with-icon" href="<?php echo wp_logout_url( get_permalinks() ) ?>" data-icon="&#xf08b;"><?php _e(\'Log out\', \'franklin\') ?></a>

<?php elseif ( $crowdfunding_enabled && ! is_user_logged_in() ) : ?>

    <a class="user-login button with-icon button-alt button-small" href="#" data-reveal-id="login-form" data-icon="&#xf007;"><?php _e(\'Login / Register\', \'franklin\') ?></a>

<?php endif ?>

我想换衣服

wp_logout_url( get_permalinks() )

wp_logout_url( home_url() )
此文件中没有要添加/删除的操作或筛选器。我已经看到了其他答案,这些答案都是说先用fork插件。但是分叉版本没有得到任何更新。有没有其他方法来进行这个小的修改?

更新时间:

我之所以要这样做,首先是为了让用户在注销后转到主页。经过一些研究(更多的学习),我发现所需要的只是儿童主题函数文件中的这一行:

add_action(\'wp_logout\',create_function(\'\',\'wp_redirect(home_url());exit();\'));

1 个回复
SO网友:s_ha_dum

考虑到主题中没有可以操作的过滤器,这有点困难,但您可以使用logout_url 过滤器:

function hack_logout_url_wpse_193113($logout_url, $redirect) {
  $logout_url = parse_url($logout_url);
  if (!empty($logout_url[\'query\'])) {
    parse_str(html_entity_decode($logout_url[\'query\']),$qry_str);
    $qry_str[\'redirect_to\'] = urlencode(home_url());
  }
  $logout_url[\'query\'] = build_query($qry_str);
  $ret = \'\';
  foreach ($logout_url as $k=>$v) {
    switch ($k) {
      case \'scheme\':
        $ret .= $v.\'://\';
        break;
      case \'host\':
      case \'query\':
        $ret .= $v;
        break;
      default :
        $ret .= $v.\'/\';
    }
  }
  return $ret;
}
add_filter(\'logout_url\',\'hack_logout_url_wpse_193113\',10,2);
echo wp_logout_url(get_permalink());

结束