функция php для изменения css

#php #wordpress #hook

#php #wordpress #крюк

Вопрос:

Я пытаюсь добавить фрагмент кода для изменения css на странице. Я добавил код functions.php в WordPress. Однако, похоже, это не работает. Поскольку я совсем новичок в этом, возможно, в коде что-то не так… Есть какие-нибудь идеи, почему это может не сработать?

 // This code is added to functions.php
// intro is the class name of the element I'm trying to change
add_action( 'intro', function () {
    if ( is_user_logged_in() ) {
        ?>
            <style>
                display: none!important;
            </style>
        <?php
    };
    exit;
});
 

Комментарии:

1. Это не работает, потому что ваш стиль неверен. Вам не хватает выделения. Что должно быть установлено display: none !important ? div-блоки, все тело, или … или … или …?

2. если вы внесли обновление, пожалуйста, обновите свой вопрос, чтобы показать, что вы изменили / попробовали, и в чем заключается новая проблема?

Ответ №1:

Я заставил его работать, удалив exit; и нацелив элемент:

 add_action( 'wp_head', function () {
    if ( is_user_logged_in() ) {
        ?>
            <style>
                .intro{
                    display: none!important;
                }
            </style>
        <?php
    };
});
 

Ответ №2:

Я думаю, что вы пытаетесь изменить содержимое класса css, что, я не думаю, что вы можете сделать. Вместо этого решением было бы назначить класс css со свойством, которое вы хотите применить к элементу, например

 <div class="<?php if ( is_user_logged_in() ) { echo 'intro';} ?>">
   // Whatever you have here will get the css style applied 
   // if user is logged in
</div>
 

И в CSS у вас есть следующее

 .intro{
  display: none!important;
}
 

Вы можете создать несколько файлов для разных стилей, например, для другого класса

 .outro{
  display:initial;
}
 

И вы можете добавить ее в код как

 <div class="<?php if ( is_user_logged_in() ) { echo 'intro';} else{ echo 'outro';} ?>">
       // Whatever you have here will get the css style applied 
       // if user is logged in and if logged out then outro class will be applied
    </div>
 

Комментарии:

1. Я думаю, проблема с этим решением заключается в том, что оно требует прямого добавления php на страницу WordPress, что, я думаю, невозможно в WordPress?

2. @Zoe это возможно. Вот как разрабатываются темы. Но пока ваш ответ работает, все хорошо :).

3. @Zoe вы создаете дочернюю тему и помещаете свой пользовательский код в child-theme/functions.php .