#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 .