Jak usunąć istniejące ustawienie dostosowania?

Odpowiedzi:

17

Późno na imprezę, ale to załatwi sprawę:

$wp_customize->remove_control('blogdescription');

Chcesz usunąć tylko tę kontrolę, a nie całą sekcję, jak sugerowano powyżej.

Natko
źródło
1
Ustawienie należy również usunąć: $ wp_customize-> remove_setting ('blogdescription')
mimarcel
Czy to również usunie jakąkolwiek przechowywaną wartość, która się tam obecnie znajduje? Mam problem polegający na tym, że chcę usunąć istniejące ustawienie / elementy sterujące, które zawierają istniejące dane, ale dane są nadal wywoływane. wordpress.stackexchange.com/questions/329343/...
Lee
10

Za pomocą tego kodu usuń istniejące ustawienia dostosowywania w motywie wordpress.

wprowadź opis zdjęcia tutaj

add_action( "customize_register", "ruth_sherman_theme_customize_register" );
function ruth_sherman_theme_customize_register( $wp_customize ) {

 //=============================================================
 // Remove header image and widgets option from theme customizer
 //=============================================================
 $wp_customize->remove_control("header_image");
 $wp_customize->remove_panel("widgets");

 //=============================================================
 // Remove Colors, Background image, and Static front page 
 // option from theme customizer     
 //=============================================================
 $wp_customize->remove_section("colors");
 $wp_customize->remove_section("background_image");
 $wp_customize->remove_section("static_front_page");

}
krupal patel
źródło
5

Dowiedziałem się, że klasa WP_Customize_Manager ma funkcję o nazwie remove_section(). W funkcji, do której customize_registerjesteś podłączony , możesz po prostu:

    $wp_customize->remove_section('nav');
    $wp_customize->remove_section('static_front_page');

Możesz znaleźć identyfikator sekcji (np. „Nav”), jeśli przejrzysz pasek tytułu akordeonu sekcji. Spójrz na identyfikator zawierającego <li>znacznik, a po nim część ciągu "customize-section-". TO ZNACZY:

<li id="customize-section-static_front_page" class="control-section customize-section">

- ID to "static_front_page"

Jessica
źródło
Wygląda to lepiej niż moje rozwiązanie, więc dam ci haczyk - nie przetestowałem go, ale przypuszczam, że masz ... Nie dostaję jednak tytułu_tagline - z pewnością powinien to powiedzieć static_front_page, czy to literówka BAC?
byronyasgur
@byronyasgur tak, to był błąd kopiowania makaronu, naprawiony teraz. Dzięki!
jessica
Właściwie to nie jest poprawna odpowiedź. Spowoduje to usunięcie całej sekcji, która zawiera zarówno tytuł witryny, jak i slogan. Pytanie dotyczy tylko sloganu. Spójrz na poniższą odpowiedź @byronyasgur
BFTrick
2

Zgodnie z OTTO

Ostatnią rzeczą, którą możesz dodać do sekcji, jest opcja „theme_supports”. Spowoduje to, że menu nie pojawi się, chyba że motyw coś obsługuje. Jeśli umieszczasz ten kod w samym motywie, wiesz już, co ten motyw obsługuje, więc nie ma to większego sensu. Rdzeń używa tego, aby nie wyświetlać opcji nagłówka i tła, jeśli motyw ich nie obsługuje.

Więc zestawiłem to z

    $wp_customize->get_setting('blogdescription')->transport='postMessage';

... i odkryłem, że następujący kod działał. Kładę falsesię na theme_supports ... nie wiem, co tak naprawdę powinno być wprowadzenie w ... może ktoś trochę bardziej eksperta może poprawić w tej sprawie.

    $wp_customize->add_control('blogdescription')->theme_supports=false;
byronyasgur
źródło
1

jeśli sekcja / panel lub rdzeń kontrolny, zawsze lepiej jest je wyłączyć zamiast usuwania.

add_action( 'customize_register', 'wp_stackexchange_58932' );
function wp_stackexchange_58932($wp_customize){
    $wp_customize->get_section( 'static_front_page' )->active_callback = '__return_false';
    $wp_customize->get_section( 'custom_css' )->active_callback = '__return_false';
}
Prafulla Kumar Sahu
źródło
1
Świetna wskazówka, użyłem go, by zawsze wyświetlać ustawienie static_front_page, nawet jeśli nie ma strony (domyślnie pokazuje się tylko wtedy, gdy strona istnieje)
Larzan
0

Jeśli używasz tego we wtyczce, powinieneś użyć argumentu priorytetowego, takiego jak 999, i zadziała we wtyczce.

add_action( "customize_register","wpcb_theme_customize_register",999,1);    

function wpcb_theme_customize_register($wp_customize){
   $wp_customize->get_setting('blogdescription')->transport='postMessage';
}
Ravi Shakya
źródło