Übergeben der Variablen von der untergeordneten Designfunktion zum übergeordneten Designfilter

Ich möchte eine Variable von meiner untergeordneten Designfunktion an einen Filter übergeben, der sich in meinem übergeordneten Design befindet. Bitte lassen Sie mich wissen, ob der folgende Code funktioniert oder nicht? Ist es der richtige Weg?

Code in functions.php des übergeordneten Themas

add_filter( 'post_thumbnail_html', "map_thumbnail" ); function map_thumbnail($html,$color) { $my_post = get_post($post->ID); $my_color = $color; if($my_post->post_name == "contact") { $html = ''; } return $html; } 

Code in Child Theme’s functions.php

  

Bitte sagen Sie mir, wird oben Code funktionieren? Kann ich die Variable $color von meinem Child-Theme zum übergeordneten Theme überleiten?

Solutions Collecting From Web of "Übergeben der Variablen von der untergeordneten Designfunktion zum übergeordneten Designfilter"

Ich bin mir nicht ganz sicher, was Sie erreichen möchten, aber das wird nicht funktionieren, weil Sie versuchen, die im übergeordneten Thema deklarierte function zu verwenden oder aufzurufen, anstatt sie durch eine neue function zu ersetzen. Ich bin mir nicht sicher, ob das Ersetzen einer function im untergeordneten Thema auch funktionieren würde. Vielleicht kann jemand anderes helfen, das zu beantworten.

Die function map_thumbnail() , die Sie im add_filter() Thema add_filter() , wird von der function add_filter() direkt darüber verwendet, um die vorhandene function post_thumbnail_html() zu ändern.

Selbst wenn dies funktionieren würde, haben Sie nur einen Parameter (‘# 0099dd’) beim Versuch, die function aufzurufen, übergeben, und dieser scheint nicht in der richtigen Reihenfolge zu sein.

apply_filter('post_thumbnail_html', $color) . Ich nehme an, du brauchst dieses Nein?

Rufen Sie die functionen auf, die einem Filter-Hook hinzugefügt wurden.

Die Callback-functionen, die an den Filter-Hook $ tag angehängt sind, werden durch Aufrufen dieser function aufgerufen. Diese function kann verwendet werden, um einen neuen Filter-Hook zu erstellen, indem einfach diese function mit dem Namen des neuen Hooks aufgerufen wird, der mit dem Parameter $ tag angegeben wurde.

Die function ermöglicht es, zusätzliche Argumente hinzuzufügen und an Hooks zu übergeben.

Hier ist das Dokument app_filters

Bevor wir zu einer Lösung kommen, schauen wir uns an, wie functionen funktionieren.

Ja, Sie können functionen im übergeordneten Thema vom untergeordneten Thema aufrufen (obwohl in Ihrem Beispiel ein Fehler auftritt, weil Sie eine Variable übergeben, bei der zwei erwartet werden). So können Sie es an einer Stelle als Filter hinzufügen und es an anderer Stelle unabhängig aufrufen.

Wenn WordPress geladen ist, erstellt es eine Bestandsaufnahme aller verfügbaren functionen. Es lädt zuerst die functions.php des untergeordneten Themas und dann das übergeordnete Thema. Eine function, die im untergeordneten Element neu definiert wird, wird im übergeordneten Element übersprungen. Die Ausführung des Codes beginnt erst, nachdem das Inventar erstellt wurde. Dann können Sie übergeordnete Themenfunktionen vom Kind aufrufen. Sie können Plug-in-functionen von Ihrem Thema aufrufen oder umgekehrt. Es ist einfach egal, wo die function definiert ist, solange sie verfügbar ist .

Was Ihre function vom Child-Theme aus nicht tun kann, ist das Verhalten der function zu ändern, wenn sie als Filter post_thumbnail_html von der function post_thumbnail_html get_the_post_thumbnail wird. Das sind zwei getrennte Anrufe, die einander nicht kennen. Wenn Sie möchten, dass die Farbe der untergeordneten function im Filter angewendet wird, funktioniert das nicht. Um das zu tun, müsstest du es umdrehen. Rufen Sie in der übergeordneten function eine function vom untergeordneten Element (sofern vorhanden) und im untergeordneten Element eine function auf, die die Farbe übergibt.

 // parent if (function_exists (wpse220111_get_child_color)) $my_color = wpse220111_get_child_color; else $my_color = "#000000"; // child function wpse220111_get_child_color () {return "#0099dd";}