支持 » DIY 问题 » 有没有办法在不修改父主题的情况下用子主题替换其中的php代码

  • 有没有办法在不修改父主题的情况下用子主题替换其中的php代码?
    我就是想禁用父主题中的一段php,或者修改那段php中的几个字?

查看 5 回复 - 1 至 5 (总计 5)
  • 版主 Dallas Lu

    (@dallaslu)

    • 尝试从 WordPress 的插件机制入手,使用钩子、过滤器来解决;
    • 从子主题入手,针对“那段php中的几个字”有相关的函数被调用的页面中,在子主题中创建相同名字的页面,复写这段代码;
    • 根据 PHP 的语法和程序特点,在子主题的 functions.php 文件中加入影响“那段php中的几个字”的变量,甚至重新定义函数以供子主题调用。

    综上,得看你的父主题中的 php 代码的具体情况。

    帖子发表于 pggdt

    (@pggdt)

    谢谢!能举个例子说明一下吗?比如父主题有一个页面是 content-single.php,里面有一段代码

    <header class="entry-header">
    		<h1 class="entry-title"><?php the_title(); ?></h1>
    
    		<div class="entry-meta">
    			<?php attorney_posted_on(); ?>
                <?php if ( comments_open() || ( '0' != get_comments_number() && ! comments_open() ) ) : ?>
                <div class="att-meta-com"><?php _e('Comments', 'attorney'); ?><span class="comments-link att-meta-link"><?php comments_popup_link( __( '0', 'attorney' ), __( '1', 'attorney' ), __( '%', 'attorney' ) ); ?></span></div>
                <?php endif; ?>
    		</div><!-- .entry-meta -->
    	</header><!-- .entry-header -->

    我想要禁用掉 class=”entry-meta”这里面的代码,要在子主题中怎么做呢?,非常感谢!我之前都是直接在父主题中将其注释掉了,但那样主题升级后就又得重新注释。

    版主 Dallas Lu

    (@dallaslu)

    在子主题中创建一个 content-single.php 并修改其中的代码为:

    <header class="entry-header">
    	<h1 class="entry-title"><?php the_title(); ?></h1>
    </header><!-- .entry-header -->

    不可以吗?

    帖子发表于 pggdt

    (@pggdt)

    不改变的部分就全部照抄吗,那升级了主题,万一新主题的content-single.php有变化不就可能出现问题吗?如果我很多php都要改,最终不是违背了建立子主题的初衷了,还不如直接在父主题中将其注释掉来的方便

    版主 Dallas Lu

    (@dallaslu)

    子主题的意义,在于自动升级时保留你的自定义修改,如果在父主题里面注释,那更新之后自然连修改的痕迹都没有了。

    即使是 WordPress 的插件,也要随 WordPress 的版本更新 API 变化而升级改进,何况一个主题的子主题呢?

    在商业定制案例中,使用了定制的主题和插件,很多情况下都是禁止检测升级,以免客户的维护人员升级 WordPress 的。因为需求已经满足,而类似 WordPress 2 到 3 大版本的变化,却需要主题和插件作者做出大量的工作来解决兼容问题。所以只可能会应用一些安全方面的更新和补丁。

    当然你也可以选择不升级主题。不过我是大胆升级的,因为我的子主题修改的文件不多,出现问题,只需很少时间就解决了。

    最后,以我在 WordPress 上安装了近200个主题的经验来看,主题的升级并不是很频繁,所以不用太担心。

查看 5 回复 - 1 至 5 (总计 5)
  • 话题 ‘有没有办法在不修改父主题的情况下用子主题替换其中的php代码’不再接受新回复。