子テーマの親テーマの動作を変更する
サブトピックとは何ですか?子テーマは、開発者が新しいテンプレートを最初から作成することを避け、代わりに既存のテーマですでに利用可能なすべての機能を利用できるようにする便利な WordPress 機能です。
ただし、場合によっては、Web サイト用に選択した 親テーマ に、さまざまな機能を使用したカスタム投稿タイプなど、必要のない機能がいくつか含まれている場合があります (またはニーズに合わせてカスタマイズする必要がある)。スラグ、ショートコード、JavaScript ライブラリ、使用しない画像サイズなど...
テーマをカスタマイズする 2 つの方法
テーマを直接編集することで目的を簡単に実現できますが、テーマを更新するたびにすべてのカスタマイズをやり直す必要があります。これはイライラする可能性があるため、別のオプションがあります。子テーマを作成し、>functions.php> ファイルを使用して 親テーマ##を変更します。 # >特徴。こうすることで、新しいバージョンがリリースされるたびに、カスタム コンテンツを失うことなく親テーマをアップグレードできます。
より具体的な詳細に入る前に、テーマの外観について簡単に説明します。親テーマの子テーマのstyle.css ファイルをインポートすることで、色、背景、タイポグラフィ、レイアウトを変更できます style .css を実行し、変更したいスタイルをオーバーライドします。
レイアウトをより詳細に制御するには、Abbas Suterwala の投稿の提案に従い、親のカスタム テンプレート ファイルを子テーマに複製することもできます。
子テーマは、author.php、category.php などの他のテンプレート ファイルを上書きすることを選択できます。 WordPress フレームワークは、まず子テーマ ディレクトリでテンプレート ファイルを探し、見つからない場合は親ディレクトリから取得します。
何を変更できるか
子テーマの
functions.php ファイルを通じて、以下を処理できます:
- テーマ機能
- カスタム投稿タイプとカテゴリ
- メニューとサイドバー
- 小さな部品
- ショートコード
- その他の画像サイズ
- 元ボックス
- JavaScript と CSS
- 親トピックのアクションとフィルター
- htdocs または www
- wp-コンテンツ
-
###テーマ###
-
- foo-theme
-
(親 テーマのディレクトリ - 変更されません)
functions.php
- header.php
- style.css
- その他のテンプレート ファイル...
- (子テーマのディレクトリ)
functions.php
- (親テーマのカスタマイズに使用するファイル) header.php (親テーマの header.php
- をオーバーライドします) style.css (これは子テーマの必須ファイルであり、 style.css
- という名前にする必要があります)
-
(親 テーマのディレクトリ - 変更されません)
functions.php
始めましょう: -
ディレクトリに空の - wp-コンテンツ
ファイルを作成します。 ほとんどの場合、WordPress after_setup_theme アクションにフックされた汎用の
wp_tuts_remove_features() 関数を使用します。また、##10 を 3 番目のパラメータ (優先度) として設定しているため、この関数は親関数よりも前に確実に起動されます。
リーリー
1.
テーマ関数の削除
一部の親テーマは、
add_theme_support 関数を介して WordPress に機能を追加します。
利用可能な機能は次のとおりです:
- 投稿サムネイル
- カスタム背景
- カスタムヘッダー
- 自動フィードリンク
- したがって、それらを削除するには、
functions.php
ファイル内の remove_parent_theme_features()
リーリー
2.
カスタム投稿タイプとカテゴリを削除する
カスタム投稿タイプとカスタム分類の削除は簡単です。親の
functions.php ファイルが parent_movie_add_post_type()
関数タイプを介してMovie カスタム投稿を追加する場合:
リーリー
...子ファイル
functions.php を使用して、これをカスタマイズできます。
リーリー
投稿タイプの登録を解除せずに、特定の機能のみを削除することもできます。たとえば、抜粋フィールドを投稿の注目の画像に置き換えたい場合は、次のように関数を変更できます。
削除できる機能の完全なリストは、WordPress Codex の remove_post_type_support にあります。
与自定义帖子类型类似,您可以通过 parent_taxonomy()
函数删除在父主题中添加的自定义分类,方法如下:
function wp_tuts_after_setup_theme() { remove_action( 'init', 'parent_taxonomy' ); }
3.删除菜单
我们可以通过 unregister_nav_menu()
函数删除父主题的菜单。该函数采用一个参数,即 register_nav_menu()
函数中使用的菜单位置标识符 slug。
如果父主题注册了标题菜单:
// PARENT functions.php add_action( 'after_setup_theme', 'register_my_menu' ); function register_my_menu() { register_nav_menu( 'header-menu', __( 'Header Menu' ) ); }
我们可以这样删除它:
// CHILD functions.php function remove_parent_theme_features() { unregister_nav_menu( 'header-menu' ); }
要识别已注册的菜单,我们可以在父主题代码中搜索 register_nav_menu()
调用。该函数的第一个参数代表我们可以用来取消注册的菜单 ID(在本例中为 header-menu
)。
4.删除小部件和侧边栏
WordPress 附带了一些我们可以停用的默认小部件。此外,我们的父主题可以添加自己的小部件,因此我们可以在主题文件中搜索它们的声明位置并记下它们的名称。通常它们在扩展 WP_Widget
类的 PHP 类中声明:
// PARENT theme class ParentWidgetName extends WP_Widget { // widget code }
因此,要取消注册小部件,我们使用类名 ParentWidgetName
:
add_action( 'widgets_init', 'wp_tuts_parent_unregister_widgets', 10 ); function wp_tuts_parent_unregister_widgets() { // remove (some) WordPress default Widgets unregister_widget( 'WP_Widget_Pages' ); unregister_widget( 'WP_Widget_Calendar' ); // remove Parent registered Widget unregister_widget( 'ParentWidgetName' ); // register a custom Widget (if needed) register_widget( 'MyCustomWidget' ); } // don't forget to add the Widget Class class MyCustomWidget extends WP_Widget { // Custom Widget code }
对于侧边栏,操作类似:
add_action( 'widgets_init', 'wp_tuts_parent_unregister_sidebars', 10 ); function wp_tuts_parent_unregister_sidebars() { // remove a sidebar registered by the Parent Theme unregister_sidebar( 'first-footer-widget-area' ); }
要识别已注册的侧边栏,我们可以在父主题的代码中搜索 register_sidebar()
调用。
我们需要做的就是记下侧边栏 ID:
// PARENT functions.php $args = array( 'id' => 'first-footer-widget-area', // other args... ); register_sidebar( $args );
5.删除短代码
覆盖或删除短代码很容易,我们只需要这样修改我们的函数:
function remove_parent_theme_features() { // remove the parent [gmap] shortcode remove_shortcode( 'gmap' ); // add our [gmap] shortcode add_shortcode( 'gmap', 'child_shortcode_gmap' ); } function child_shortcode_gmap( $atts ) { // create our shortcode that overwrites the parent one }
要识别已注册的短代码,我们可以在父主题代码中搜索 add_shortcode()
调用。第一个参数是我们要查找的参数;-)。
6.删除附加图像尺寸
如果父主题添加了我们不在子主题中使用的新图像尺寸,我们可以在父主题代码中搜索 add_image_size()
调用。在本例中,它们是:custom_size_parent_1
和 custom_size_parent_2
。我们通过这种方式重置它们:
add_filter( 'intermediate_image_sizes_advanced', 'remove_parent_image_sizes' ); function remove_parent_image_sizes( $sizes ) { unset( $sizes['custom_size_parent_1'] ); unset( $sizes['custom_size_parent_2'] ); return $sizes; }
这很有用,因为每次用户上传图像时,WordPress 都不会创建我们不使用的其他图像尺寸。
要创建自定义图像尺寸,我们可以将其添加到子 functions.php 文件中:
if ( function_exists( 'add_image_size' ) ) { // 400 pixels wide and unlimited height add_image_size( 'custom_size_child_1', 400, 9999 ); // 320 pixels wide and 240 px tall, cropped add_image_size( 'custom_size_child_2', 320, 240, true ); }
7.删除元框
通过 remove_meta_box()
函数,我们可以删除默认的 WordPress 和父主题元框。
WordPress 默认元框列表可在 WordPress Codex 中的 remove_meta_box()
下找到。该函数具有三个参数:元框 ID、将从中删除的页面、编辑上下文(normal
、advanced
、side
)。
如果父主题在帖子编辑屏幕中添加了元框,我们可以通过以下方式禁用它们:
add_action( 'admin_menu' , 'wp_tuts_remove_metaboxes', 99 ); function wp_tuts_remove_metaboxes() { // remove default WP Trackback Metabox from Posts editing page remove_meta_box( 'trackbacksdiv', 'post', 'normal' ); // remove a Parent Theme Metabox 'parent_post_foo_metabox' remove_meta_box( 'parent_post_foo_metabox', 'post', 'normal' ); }
我们可以通过在父主题代码中搜索 add_meta_box
或 add_meta_boxes()
调用来识别父元框。
要删除的元框的 ID 是 add_meta_box()
函数的第一个参数。
8. 删除 JavaScript 和 CSS 样式表
如果父主题添加了我们不需要的 JavaScript 和 CSS 样式:
// PARENT functions.php add_action( 'wp_print_scripts', 'parent_scripts' ); add_action( 'wp_print_styles', 'parent_styles' ); function parent_scripts() { wp_enqueue_script( 'fancybox-parent-js', get_stylesheet_directory_uri() . '/fancybox/jquery.fancybox.pack.js' ); } function parent_styles() { wp_enqueue_style( 'fancybox-parent-css', get_stylesheet_directory_uri() . '/fancybox/jquery.fancybox.css' ); }
我们可以这样删除它们:
// CHILD functions.php add_action( 'wp_print_scripts', 'child_overwrite_scripts', 100 ); add_action( 'wp_print_styles', 'child_overwrite_styles', 100 ); function child_overwrite_scripts() { wp_deregister_script( 'fancybox-parent-js' ); } function child_overwrite_styles() { wp_deregister_style( 'fancybox-parent-css' ); }
要识别已注册的 JavaScript 和 CSS 样式,我们可以在父主题代码中搜索 wp_enqueue_script()
和 wp_enqueue_style()
调用。
该函数的第一个参数是我们可以在 wp_deregister_script()
或 wp_deregister_style()
函数中使用的参数。
9.删除父主题操作和过滤器
某些主题(例如 Thematic)提供了多个挂钩来修改主题行为,而无需更改主题文件。在本例中,Thematic 提供了一个 thematic_header
操作来加载其他操作:
thematic_brandingopen()
thematic_blogtitle()
thematic_blogdescription()
thematic_brandingclose()
thematic_access()
我们不会详细研究这些函数的作用,可能其中一些函数会在博客标题中打印一些信息:名称、描述等等...在这种情况下,我们可以停用 thematic_blogdescription()
函数这样:
// Unhook default Thematic functions function unhook_thematic_functions() { // we put the position number of the original function (5) // for priority reasons remove_action( 'thematic_header', 'thematic_blogdescription', 5 ); } add_action( 'init', 'unhook_thematic_functions' );
在这些情况下,可能很难理解父主题的结构及其工作原理。我的建议是选择一个带有详细文档、良好的支持论坛并在整个代码中提供钩子的父主题。
这肯定会让我们损失更少的开发时间,并使子主题的定制变得更加容易。
参考文献
- 子テーマの基本とWordPressでの子テーマの作成
-
WordPress Codex ドキュメント
after_setup_theme
remove_action
add_theme_support
register_post_type
add_post_type_support
remove_post_type_support
register_nav_menu
unregister_nav_menu
ウィジェットの登録
ウィジェットの登録解除
register_sidebar
サイドバーの登録解除
add_shortcode
remove_shortcode
add_image_size
add_meta_box
remove_meta_box
wp_deregister_script
wp_deregister_style
- WordPress 親テーマ コレクション
- テーマ別テーマのフレームワーク
以上が子テーマの親テーマの動作を変更するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています
