2016-03-29 4 views
1

Ich sehe die folgende Fehlermeldung, wenn ich versuche, meine Tabs neu anzuordnen. Hier ist, was ich in meinen Kind-Themen functions.phpadd_filter, um die einzelnen Produktregisterkarten neu zu sortieren, was zu einem Fehler führt

PHP Warnung tue: call_user_func() erwartet Parameter 1 ein gültiger Callback zu sein, kein Array oder String angegeben in wp-content \ themes \ ausgeprägte \ WooCommerce \ Ein-Produkt \ Tabs \ tabs.php on line 47

Linie 47 in tabs.php Punkte dazu -

<?php foreach ($tabs as $key => $tab) : ?> 

<div class="panel entry-content" id="tab-<?php echo esc_attr($key); ?>"> 
    <?php call_user_func($tab['callback'], $key, $tab); ?> 
</div> 
<?php endforeach; ?> 

Filter hinzufügen bin zu verwenden versuchen, ist dies -

add_filter('woocommerce_product_tabs', 'woo_reorder_tabs', 98); 
function woo_reorder_tabs($tabs) { 

    $tabs['reviews']['priority'] = 5;   // Reviews first 
    $tabs['description']['priority'] = 10;   // Description second 
    $tabs['additional_information']['priority'] = 15; // Additional information third 

    return $tabs; 
} 

Ich kann nicht herausfinden, was falsch ist. Bitte helfen Sie, das Problem zu identifizieren und zu beheben.

+0

Sind Sie sicher, dass der Code ist, dass Ihr Problem verursacht wird? Es sei denn, der '$ tabs'-Parameter ist nicht wie erwartet strukturiert, sollte es in Ordnung sein (Ich verwende nicht woocommerce, also weiß nicht über diesen speziellen Filter). Wenn Sie den Funktionsinhalt auf 'return $ tabs;' ändern, funktioniert das? Wenn nicht, könnte Ihr Problem anderswo sein. Wenn ja, welche Struktur zeigt 'print_r ($ tabs);'? – Hobo

+0

Danke, ich hatte den '$ tabs [' additional_information '] 'Eintrag im struc entfernt, und ich habe ihn in dieser Funktion referenziert. Das Ausdrucken des $ tabs-Inhalts lieferte den notwendigen Debug-Schritt. – Ranju

+0

Kühl; froh, dass du das Problem gelöst hast – Hobo

Antwort

0

Ich hatte den $tabs['additional_information'] Eintrag in der Struktur entfernt, und ich habe es in dieser Funktion referenziert. Das Ausgeben des Inhalts $tabs lieferte den erforderlichen Debug-Schritt, um die Warnmeldung zu beheben. Es gab keine Änderung in der Neuordnungsfunktion erforderlich, es war nur ein Fall von schlechtem Verweis auf nicht existierenden Eintrag im Array.

0

Ja, das funktioniert, wenn Sie eine Registerkarte entfernen, die nie verwendet wird. Aber es ist keine Lösung für die Registerkarte "Berichte". Die Bewertungen werden angezeigt, wenn es einige gibt, und ausgeblendet, wenn keine vorhanden sind. Das Problem beginnt, wenn Sie anfangen, Sachen mit der Neuordnungsregisterkarte zu tun (erklären Sie einfach diese Registerkarte). Dann beginnt Woocommerce jedes Mal damit und gibt einen Fehler aus, wenn die Produktseite keine Bewertungen hat.

0

Ich sah das gleiche Problem vor.

Sie verschiedene Funktionen für die Umbenennung erstellen haben, entfernen, Nachbestellungen oder das Hinzufügen von Registerkarten mit ihren Filter:

Like:

add_filter('woocommerce_product_tabs', 'woo_remove_product_tabs', 98); 

function woo_remove_product_tabs($tabs) { 
    unset($tabs['reviews']); // Remove the reviews tab 
    $tabs['description']['title'] = __('Additional Information'); // Rename the description tab   
    return $tabs; 
} 

add_filter('woocommerce_product_tabs', 'woo_rename_tabs', 98); 

function woo_rename_tabs($tabs) { 
    $tabs['description']['title'] = __('Additional Information'); // Rename the description tab 
    return $tabs; 
} 

add_filter('woocommerce_product_tabs', 'woo_new_product_tab'); 

function woo_new_product_tab($tabs) { 
    $tabs['shipping_returns'] = array(
     'title' => __('Shipping And Returns', 'woocommerce'), 
     'priority' => 50, 
     'callback' => 'woo_new_product_tab_content' 
    ); 
    return $tabs; 
} 

function woo_new_product_tab_content() { 
    echo get_the_title(); 
    echo '<p>Here\'s your new product tab.</p>'; 
} 
Verwandte Themen