Больше нельзя принудительно публиковать с помощью классического редактора?

Я не перехожу на новые функции блоков WordPress и остаюсь на классическом редакторе.

Только что заметил, что плагин WP Discourse получил обновление для настройки, которую я использую, — Force Publish:

Эта настройка применяется только при использовании редактора блоков для публикации записей.

Жаль, но где есть желание, там есть и способ. Кто-нибудь ещё сталкивался с этой проблемой и нашёл кастомное решение, например, что-то, что можно добавить в старый файл functions.php вашей темы?

Спасибо

Привет, @oopsyscoops, да, есть некоторые ограничения при поддержке обоих редакторов. Вы всё ещё можете использовать настройку «Автоматическая публикация» с классическим редактором. Возникают ли у вас проблемы с её использованием в вашем случае?

Автоматическая публикация подошла бы, если бы это был блог для одного автора.

Однако для блога с несколькими авторами функция Принудительная публикация оказалась очень полезной.

Прежде чем я начну изучать список изменений, не подскажете ли вы, в какой версии WP Discourse эта функция была перенесена в редактор блоков и удалена из классического редактора?

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

Надеюсь, что WP Discourse в конечном итоге не откажется полностью от классического редактора. Классический редактор до сих пор используется более чем на 6 миллионах сайтов (это подтверждённые данные, но, вероятно, их ещё больше), и я уверен, что миллионы людей будут продолжать использовать его функции неограниченно долго.

Я планирую это, и подозреваю, что функции классического редактора в конечном итоге снова получат официальную (и опциональную) поддержку в WP (без зависимости от плагинов), когда спрос станет очевидным и они осознают, что даже спустя годы некоторые люди просто предпочитают классический редактор и не перейдут на новые функции блоков.

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

Классический редактор по-прежнему точно поддерживается.

Сомневаюсь, но я уже ошибался (по крайней мере, трижды, о чем мне известно ;))

Мы будем рады получить ваш pull request, если вы сможете решить проблемы, которые @simon стремился устранить при удалении этой функции (см., например). Он, возможно, сможет объяснить подробнее.

Это просто непрактично. Я работаю редактором уже более десяти лет и обучал, а также управлял десятками писателей самого разного уровня — от полных луддитов до программистов. За всё время у меня было лишь несколько хороших авторов, которые при этом были достаточно технически подкованы и организованы, чтобы следовать ВСЕМ моим инструкциям (без затруднений).

Я мог бы быть более строгим редактором (я и так уже довольно одержим деталями), но тогда я потерял бы ценные голоса. Слишком много замечательных писателей, которые сотрудничали со мной за эти годы, едва умели включать компьютер. Многим из них сложно давалось даже освоение публикации в WordPress, и они хотели бы просто отправлять мне документы Word по электронной почте. :squinting_face_with_tongue:

Поэтому я обучаю их так хорошо, как могу, но в конечном счёте автоматизация — это здравый смысл.

В любом случае, мне бы очень хотелось узнать больше о том, почему эта функция слишком сложна в поддержке одновременно для Classic и Block редакторов. Если вы сможете кратко напомнить, @simon? К слову, у меня есть партнёр по одному проекту, который настаивает на том, чтобы я разрешил ему использовать Block редактор (в то время как вся остальная команда использует Classic), так что у меня есть некоторый опыт работы с обоими редакторами, и я понимаю, как это может стать проблемой.

Спасибо

Да, было бы здорово, чтобы опция «Принудительная публикация» работала с обоими редакторами. Прошло уже несколько лет с тех пор, как я последний раз занимался этим. Я не уверен, в чём была причина проблемы, но подозреваю, что её можно решить.

Хорошо, мы смотрим на этот файл:

/lib/discourse-publish.php

Сравнивая версии 2.1.2 и 2.1.3, вот единственные различия (касательно «Принудительной публикации»):

if ( ( 0 === $force_publish_max_age ) || $post_time >= $min_date ) {

было изменено на:

if ( ( ( 0 === $force_publish_max_age ) || $post_time >= $min_date ) && $is_rest_request ) {

Также были добавлены следующие строки:

// Настройка «Принудительная публикация» не может быть легко поддержана одновременно в редакторах Block и Classic. Переменная $is_rest_request
// используется для того, чтобы настройка «Принудительная публикация» учитывалась только для записей, опубликованных через редактор Block.
$is_rest_request = defined( 'REST_REQUEST' ) && REST_REQUEST;

Если мне нужно предположить, возможно, старый способ вызывал ошибки в редакторе Block? Так что, может быть, всё так же просто, как использование условного оператора?

is_block_editor или use_block_editor_for_post могут подойти:

if ( is_block_editor() ) {
	// делать это новым способом
} else {
	// делать это старым способом
}

Хотите попробовать и сделать pull request?

Если вы обращаетесь ко мне, я точно не стану лезть напролом, пока @simon не вспомнит, почему это было удалено изначально (или не пересмотрит свои действия, чтобы снова узнать, что это было). Это может быть какой-то неизвестный кошмар, связанный с ядром WordPress, Discourse или WP Discourse, который не сводится к простой проблеме, ограниченной этими несколькими файлами и строками кода.