Вопрос или проблема
Я пытаюсь подключить скрипт comment-reply.js только на определенной странице, но в моем коде что-то не так. Может, кто-то подскажет, в чем дело?
<?php if ( is_singular('1740') && (!is_home() || !is_front_page() || !is_single()) && comments_open() && get_option('thread_comments') ) wp_enqueue_script( 'comment-reply' ); ?>
Я думаю, что условный тег comments_open()
не нужен. Он проверяет, разрешены ли комментарии для этой конкретной страницы.
Попробуйте использовать следующий код
<?php
if ( is_single('1740') ||
( !is_home() || !is_front_page() || !is_single() ) ) {
wp_enqueue_script( 'comment-reply' );
} ?>
comments_open()
требует идентификатор записи для конкретных записей, чтобы проверить, разрешены ли комментарии или нет. Так что избегайте использования этого условия.
Не используйте is_singular()
с ID, так как он проверяет, отображается ли единичная запись с использованием имени типа записи в качестве параметра. Вместо этого используйте is_single()
с использованием идентификатора записи, для которой вы хотите отобразить.
В вашем коде выше также отсутствовала фигурная скобка для условия if.
Надеюсь, это поможет ответить на ваш вопрос.
Попробуйте добавить следующий код и дайте знать
if ( is_singular('1740') && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
Ответ или решение
Чтобы подключить скрипт comment-reply.js
только на определенной странице в WordPress, нужно использовать условные теги и функцию wp_enqueue_script
в правильном синтаксисе. Давайте рассмотрим, как это сделать правильно и устранить любые ошибки в вашем коде.
Правильный подход
Ваш первоначальный код содержит несколько проблем, которые можно исправить. Вот исправленная версия кода, которая корректно проверяет, является ли текущая страница конкретным постом (в вашем случае с ID 1740) и открыты ли комментарии:
function custom_enqueue_comment_reply() {
if ( is_single(1740) && comments_open() && get_option('thread_comments') ) {
wp_enqueue_script('comment-reply');
}
}
add_action('wp_enqueue_scripts', 'custom_enqueue_comment_reply');
Объяснение кода:
-
Функция
custom_enqueue_comment_reply
: Определяем функцию, в которой выполняется логика подключения скрипта. -
Условие
is_single(1740)
: Проверяет, является ли текущая страница постом с ID 1740. Это гарантирует, что скрипт будет подключен только на этой конкретной странице. -
Проверка
comments_open()
: Убеждается, что комментарии включены для данной записи, прежде чем подключать скрипт. -
Функция
get_option('thread_comments')
: Проверяет, включены ли вложенные комментарии на сайте. -
Использование
wp_enqueue_script('comment-reply')
: Подключает скрипт для обработки ответов на комментарии. -
Добавление функции в хуки: Использование
add_action('wp_enqueue_scripts', 'custom_enqueue_comment_reply')
позволяет подключить скрипт в нужное время в процессе загрузки страницы.
Заключение
Таким образом, ваш код будет работать корректно и подключит comment-reply.js
только на нужной странице. Не забывайте, что использование функций проверки, таких как comments_open()
и get_option('thread_comments')
, важно для обеспечения корректного поведения системы комментариев. Если у вас есть дополнительные вопросы или если вам нужна помощь с другим функционалом, пожалуйста, дайте знать!