вимкнення коментарів за замовчуванням для сторінок і спеціальних типів публікацій?


20

Я хочу вимкнути коментарі за замовчуванням зі сторінками та спеціальними публікаціями

Спочатку я просто використовував умовні функції функції відображення коментарів, щоб уникнути відображення блоку на цих сторінках, але мені потрібно, щоб користувач міг повернути коментарі в міру необхідності.


1
Лише доброзичливе нагадування, я додав відповідь на це питання, що, на
мою

1
Я впевнений, що ваша функція працює добре, але я вже вибрав відповідь, яка працює для моєї мети.
Легкий фузз

Відповіді:


9

З того, що я розумію, ви хочете встановити сторінки та деякі власні типи публікацій, щоб вони коментували "вимкнено" за замовчуванням, тоді як публікації все ще використовуватимуть параметр за замовчуванням (тобто коментувати "увімкнено"). У такому випадку буде виконана наступна функція.

function default_comments_off( $data ) {
    if( $data['post_type'] == 'page' && $data['post_status'] == 'auto-draft' ) {
        $data['comment_status'] = 0;
    }

    return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_off' );

1
це не вдається, коли ви хочете ввімкнути коментарі. Це потрібно відредагувати, щоб він запустився лише один раз
Легкий фуз

1
зараз не на машині, але я думаю, ви можете скористатися механіком метаданих, щоб перевірити наявність мета, якщо там не запущена функція, інакше додайте мета та запустіть функцію.
Легкий фуз

1
протестовано, це не працюватиме так просто, тому що ідентифікатор поста не міститься у вартісі $ data вашої функції.
Легкий фуз

1
Я перевірив це (з WP 3.0), перш ніж надсилати свою відповідь, і це спрацювало. З яким питанням ви стикаєтесь? Ідентифікатор публікації не в $ даних, оскільки публікація ще не створена до запуску функції (подивіться на фільтр у функції wp_insert_post). Функція запускається лише під час відвідування wp-admin / post-new.php? Post-type = xxx, перш ніж вводити будь-який вміст у поля.
sorich87

1
на моєму тестовому сервері я не можу вмикати коментарі, вони постійно відключаються.
Легкий фуз

10

Коли ви створюєте нову публікацію (спеціальний тип або звичайну), WordPress викликає дзвінки, в get_default_post_to_editяких потім встановлюються значення за замовчуванням, які матиме нова публікація.

Ця функція забезпечує декілька гачків фільтрів для зміни заголовка, вмісту та уривку за замовчуванням, але, на жаль, нічого іншого ... однак кожен фільтр проходить уздовж повного $postоб'єкта до зворотного виклику, по суті це означає, що можна переглянути декілька властивостей (або лише одного, якщо нам подобається)

Це повинно працювати для вас, просто додайте типи публікацій, до яких повинен застосовуватися код, як випадки, що знаходяться всередині комутатора .. (фільми та сторінки - приклади) ..

function my_default_content( $post_content, $post ) {
    if( $post->post_type )
    switch( $post->post_type ) {
        case 'page':
        case 'movie':
            $post->comment_status = 'closed';
        break;
    }
    return $post_content;
}
add_filter( 'default_content', 'my_default_content', 10, 2 );

Код був протестований на WP 3.0.1 і має бажаний ефект відключення коментарів для типів публікацій, зокрема, залишаючи інші успадковувати стан за замовчуванням від default_comment_statusопції.

Сподіваюся, що це допомагає .... :)


2

Я написав плагін, щоб відключити коментарі на сторінках за замовчуванням. http://wordpress.org/extend/plugins/page-comments-off-please/

Можливо, це допоможе?


1
здається надмірним, враховуючи 5-ти рядковий розв'язок у відповіді sorich87! Ура, хоча.
Легкий фуз

1
Насправді існує багато підходів до вирішення вимог коду, це просто інший метод.
t31о

1

Згідно з цією темою , те, що ви запитуєте, неможливо без використання спеціального плагіна або функції для його виконання.


1
У мене немає проблем із написанням, просто потрібно вказати в правильному напрямку. Гачки та фільтри тощо, що може допомогти.
Легкий фуз

1
Якщо ви все-таки пишете, будь ласка, поділіться тим, що ви тут зробили! Схоже, плагін, який може це зробити, отримає багато користі.
Травіс Нортчетт

1

Я рекомендую все-таки використовувати свої умовні умови на дисплеї коментарів, але використовувати параметри, щоб зберігати свої умовні налаштування. Потім ви можете додати сторінку в меню "Налаштування", яка дозволяє адміністраторам включати або вимикати коментарі за потреби.


Оновлення

Мені здається, що ви хочете встановити за замовчуванням для коментарів "вимкнено" як глобальне налаштування, а не встановлювати його "вимкнено" щоразу, коли ви створюєте сторінку. Це є можливим.

Перейдіть у Налаштування >> Обговорення в розділі адміністратора WordPress. У першому розділі ("Налаштування статті за замовчуванням" ви побачите опцію "Дозволити людям публікувати коментарі до нових статей" ... зніміть цю опцію.

Тепер за замовчуванням коментарі будуть вимкнено "для всіх нових публікацій, сторінок та спеціальних типів публікацій". Ви все ще можете повернути коментарі "увімкнено" у кожному конкретному випадку, встановивши відповідний прапорець у мета-вікні "Обговорення" на індивідуальному екрані редагування публікації / сторінки.


1
Тут вже є варіант. Я просто хочу його вимкнути за замовчуванням.
Легкий фуз

1
Вже є варіант де? Ви посилаєтесь на поле "Обговорення" внизу екрана редагування публікації / сторінки?
EAMann

1
Так, я просто хочу, щоб це не було перевірено. Рішення Соріч87 майже працює. Ще не на машині, щоб щось випробувати.
Легкий фуз

-2

Якщо ви просто додаєте цей код у function.php

<?php
add_post_type_support( 'your_custom_post_type', array( 'comments' ) );
?>

Перейдіть до публікації, а в опціях екрана позначте "Обговорення" та "Коментарі", ви можете ввімкнути / вимкнути коментарі для кожного користувацького типу публікації.


2
насправді не відповідає на (хоч і вже відповів) запитання
Mild Fuzz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.