目次
テーマをカスタマイズする 2 つの方法
functions.php ファイルが parent_movie_add_post_type()
参考文献
ホームページ バックエンド開発 PHPチュートリアル 子テーマの親テーマの動作を変更する

子テーマの親テーマの動作を変更する

Sep 04, 2023 am 09:05 AM

子テーマの親テーマの動作を変更する

サブトピックとは何ですか?子テーマは、開発者が新しいテンプレートを最初から作成することを避け、代わりに既存のテーマですでに利用可能なすべての機能を利用できるようにする便利な WordPress 機能です。

ただし、場合によっては、Web サイト用に選択した 親テーマ に、さまざまな機能を使用したカスタム投稿タイプなど、必要のない機能がいくつか含まれている場合があります (またはニーズに合わせてカスタマイズする必要がある)。スラグ、ショートコード、JavaScript ライブラリ、使用しない画像サイズなど...


テーマをカスタマイズする 2 つの方法

テーマを直接編集することで目的を簡単に実現できますが、テーマを更新するたびにすべてのカスタマイズをやり直す必要があります。これはイライラする可能性があるため、別のオプションがあります。子テーマを作成し、>functions.php> ファイルを使用して 親テーマ##を変更します。 # >特徴。こうすることで、新しいバージョンがリリースされるたびに、カスタム コンテンツを失うことなく親テーマをアップグレードできます。

より具体的な詳細に入る前に、テーマの外観について簡単に説明します。親テーマの子テーマの

style.css ファイルをインポートすることで、色、背景、タイポグラフィ、レイアウトを変更できます style .css を実行し、変更したいスタイルをオーバーライドします。

レイアウトをより詳細に制御するには、Abbas Suterwala の投稿の提案に従い、親のカスタム テンプレート ファイルを子テーマに複製することもできます。

子テーマは、

author.phpcategory.php などの他のテンプレート ファイルを上書きすることを選択できます。 WordPress フレームワークは、まず子テーマ ディレクトリでテンプレート ファイルを探し、見つからない場合は親ディレクトリから取得します。


何を変更できるか

子テーマの

functions.php ファイルを通じて、以下を処理できます:

    テーマ機能
  • カスタム投稿タイプとカテゴリ
  • メニューとサイドバー
  • 小さな部品
  • ショートコード
  • その他の画像サイズ
  • 元ボックス
  • JavaScript と CSS
  • 親トピックのアクションとフィルター
したがって、次の Web サイト構造があると仮定します:

  • htdocs または www
    • wp-コンテンツ
        ###テーマ###
        • foo-theme
        • ( テーマのディレクトリ - 変更されません) functions.php
          • header.php
          • style.css
          • その他のテンプレート ファイル...
          foo-theme-child
        • (子テーマのディレクトリ) functions.php
          • (親テーマのカスタマイズに使用するファイル) header.php (親テーマの
          • header.php
          • をオーバーライドします) style.css (これは子テーマの必須ファイルであり、
          • style.css
          • という名前にする必要があります)
    • 始めましょう:
    /wp-content/主題/foo-theme-child/
  • ディレクトリに空の
functions.php

ファイルを作成します。 ほとんどの場合、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_1custom_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、将从中删除的页面、编辑上下文(normaladvancedside)。

如果父主题在帖子编辑屏幕中添加了元框,我们可以通过以下方式禁用它们:

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_boxadd_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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

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

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

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

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

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

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

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

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

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

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

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

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

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

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

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

See all articles