netconstructorcomМастер
Лучшая подборка кода для вашего файла functions.php [закрыто]
Share
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Учитывая, что первые 5 ответов были даны ОП, и вопрос кажется более ориентированным на сбор массива ответов, а не на один окончательный ответ, это должна быть вики сообщества.
Все ответы, не относящиеся к теме, должны быть удалены. Этот поток является хорошим примером плохой практики кодирования.
Я думаю, что было бы лучше поощрять людей создавать плагины с пользовательскими функциями вместо того, чтобы использовать их темы functions.php.
@NetConstructor.com Чистое количество просмотров страниц не является показателем качества. Мы должны поощрять конкретные вопросы с конкретными ответами и хорошей практикой кодирования. Эта ветка наоборот.
@NetConstructor.com Обсудите это на Meta, где люди смогут лучше увидеть ваши аргументы. 🙂
Фантастика для развития! Я часто использую таблицу опций для хранения версий БД для моих плагинов… использование phpMyAdmin для сброса до старой версии БД для тестирования скрипта обновления — это боль… это сделает его намного проще !!!
Вы также можете попасть на ту же страницу параметров (при входе в систему), перейдя на yoursite/wp-admin/options.php
Что касается последнего фрагмента этого ответа. Это отличное дополнение, так как я добавлял их вручную для каждого типа сообщений. Единственная проблема, с которой я столкнулся, заключается в том, что он добавляет данные после записи «категория» и «тег» по умолчанию. Не могли бы вы обновить свой ответ, чтобы переместить «категорию» или «тег» по умолчанию вниз или удалить их, чтобы их можно было добавить вручную?
@NetConstructor.com Не думаю, что понимаю вашу просьбу. Если я это сделаю, то я думаю, что это будет немного сложнее, и сейчас у меня нет времени, чтобы понять, как это сделать.
Включить пользовательские типы сообщений в результаты поиска — я думаю, теперь вы можете сделать это с
exclude_from_search
параметромregister_post_type
…Это далеко не идеально. Это будет работать только в том случае, если логин администратора по-прежнему является «admin» по умолчанию, чего не должно быть по соображениям безопасности. Вместо этого вы должны проверить конкретную возможность, которую вы хотите, чтобы люди видели сообщения.
Т.е. if (!current_user_can(‘manage_options’)) {…add_filter…} — Извините за двойной комментарий, я забыл, что нажатие ввода отправляет комментарии)
Вот почему я добавил комментарий к коду, где вы можете изменить имя пользователя администратора. Как бы вы его улучшили/переписали?
Лучший способ — удалить глобальные $user_login и get_currentuserinfo() и вместо этого использовать current_user_can в вашем предложении if. Это всего 1 строка вместо 3, и это стандартный способ. Вы можете проверить конкретную возможность, которая потребуется для ДЕЙСТВИЯ над сообщениями, в данном случае это «update_core» и «update_plugins».
Итак: if (!current_user_can(‘update_plugins’)) {/*УДАЛИТЬ СООБЩЕНИЯ*/}
источник в моем сообщении: wpengineer.com/320/publish-the-feed-later с дополнительной информацией
Вы также можете просто удалить фильтр генератора:
remove_action('wp_head', 'wp_generator');
ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js истекает всего через час. Всегда используйте полную информацию о версии, такую как ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js, срок действия которой истекает через год.
Код «Удалить информацию о версии WordPress для безопасности» на самом деле ничего не делает для повышения безопасности вашего сайта. Это даже не останавливает раскрытие версии WP, используемой на вашем сайте.
Неправда, Джозеф, если ваша версия WordPress будет раскрыта, люди смогут увидеть, используете ли вы более старую версию, тем самым раскрывая ваши уязвимости. Всегда полезно удалить это из всех установок WordPress. Лично я даже не знаю, почему они поместили его туда, поскольку это проблема безопасности.
Можно ли это установить для каждого типа сообщения?
Глядя на его использование в wp_save_post_revision(), похоже, нет способа отличить его по типам сообщений. Там нет фильтра или чего-то еще по значению, хотя, вероятно, должно быть.
спасибо, Джереми. Кому-нибудь еще, если вы знаете, как это сделать, напишите здесь.
лично я предпочитаю 10. Я знаю, что это двойное число, но всегда, когда мне нужна ревизия, оно всегда старше 5.
есть ли быстрый способ изменить это, чтобы скрипт вызывался только тогда, когда вы являетесь администратором, И добавляйте что-то к URL-адресу, чтобы показать информацию об отладке?
Вот как это сделано в моей теме: semiologic.com/software/sem-reloaded — файл /inc/debug.php включается в /functions.php или /inc/init.php (не могу вспомнить начало моего голова).
JPEG намного лучше, спасибо большое! проверено в 3.4-альфа
если вы, ребята, хотите это как плагин: wordpress.org/extend/plugins/sharpen-resized-images
куда девается эта функция?
@StevieD — как следует из названия, он находится внутри functions.php в вашем шаблоне. Однако я был бы осторожен, этой функции почти 8 лет.
Согласно этому wordpress.stackexchange.com/questions/34030/… я бы не стал скрывать slugdiv таким образом, а вместо этого использовал этот gist.github.com/1863830
@CorvanNoorloos Ваша ссылка на github не работает.
отличная маленькая находка. Одна из тех вещей, которая просто удаляет еще один кусок кода, который не нужен.
В WordPress 3.0.1 этот фильтр добавлен с приоритетом 11, поэтому для его удаления необходимо добавить
11
третий параметр.@ user402… это ограничение по словам или символам? Не могли бы вы опубликовать, как сделать оба?
@NetConstructor.com Эта функция (и
excerpt_length
хук) заканчивается словами.Хе. Я добавил этот фильтр в ядро. 🙂
Действительно ли существует основной фильтр с именем
custom_menu_order
? Я не мог найти ни одного…@kaiser задокументирован здесь codex.wordpress.org/Plugin_API/Filter_Reference/…
Как переместить столбец в крайнее левое положение?
как часто и когда wordpress пингует сам себя?
На самом деле у меня довольно часто возникает эта проблема. Если я ссылаюсь на внутреннюю ссылку на другую публикацию в моем блоге WP, я получаю обратную связь (не помню какую) от себя. Это раздражает.
То же самое. У меня есть новостной / журнальный блог, и я довольно часто ссылаюсь на другие статьи.
для использования php < 5.2
memory_get_usage()
Я использовал его в версии 3.1.4. Но виджеты остались. У кого-нибудь есть идея?
Все еще работает на WP 4.5 🙂
Хорошо, но get_the_image отлично с этим справляется. wordpress.org/extend/plugins/get-the-image
правильно, но этот работает по-другому и исправляет различные проблемы, которые get_the_image не принимает во внимание
Чем он отличается от сценария get_the_image?
@matt — В WordPress есть разные способы добавления изображений в сообщения, и я думаю, что скрипт get_the_image просто смотрит на один из них. Это проверяет, есть ли избранное изображение, и сначала использует его, если оно доступно, затем, я думаю, оно проверяет первое изображение, добавленное к содержимому публикации, и если оно не найдено, оно проверяет медиагалерею на предмет изображения с наивысшим сортом. порядок (по крайней мере, я так помню порядок).
я предлагаю wordpress.org/extend/plugins/auto-post-thumbnail Автоматически генерировать миниатюру публикации (избранную миниатюру) из первого изображения в публикации или любого пользовательского типа публикации, только если миниатюра публикации не установлена
не могли бы вы разделить каждый из них на отдельные ответы в течение следующих нескольких недель. Я собирался сделать это для вас, но не хотел, чтобы это выглядело так, как будто я беру на себя ответственность за ваши ответы. В любом случае, я стараюсь организовать это, чтобы пользователи могли легко найти информацию, которую они ищут. заранее спасибо
Я просто использовал код «Ограничить элементы меню ADMIN на основе имени пользователя, заменить имя пользователя фактическим именем пользователя», и это здорово, но не могли бы вы обновить код, чтобы также показать, как это можно сделать для конкретной «роли пользователя». Думаю, это было бы очень полезно!
Извините, NetConstructor, я только сейчас увидел ваш комментарий. Для роли пользователя я бы использовал «current_user_can». У меня нет времени проверить это, но когда я это сделаю, я добавлю это.
значение по умолчанию для wp_feed_cache_transient_lifetime — 43200 (12 часов).
Это не обязательно хорошая идея — неактивный плагин все еще присутствует в файловой системе, а небезопасный все еще можно использовать для взлома сайта. Плагины всегда должны быть обновлены.
Мы используем что-то похожее для настройки параметров подключения к живой, промежуточной и разрабатываемой базе данных.
Упомянутые выше функции записывают данные в поле в базе данных опций. Комментировать и раскомментировать их — это путь. Существуют плагины для пользовательских ролей, но если вы используете упомянутые выше функции, вы не можете оставить эти функции запущенными, и вам НЕ нужно устанавливать их более одного раза или устанавливать их в зависимости от того, обращается ли конкретный пользователь к чему-либо. Если вы хотите этого, назначьте этому пользователю определенную, уникальную роль. И обратитесь к кодексу, все что я пишу выше на 100% правильно если делать без плагина. Почти в каждом случае вам нужно установить роли пользователей только один раз.
@tomcat23: Чтобы проиллюстрировать это, я завернул его в функцию, чтобы добавить роль только тогда, когда она еще не существует. Еще одно замечание: я думаю, было бы проще разместить роль где-нибудь в иерархии ролей, извлекая ограничения из какой-то встроенной роли, а затем добавляя/удаляя возможности из встроенной роли. Было бы более ясно и легко запомнить, если бы его заглавные буквы были помещены где-то между ex. админ и редактор. — Надеюсь, вы не возражаете, что я отредактировал ваш ответ. Если вы это сделаете, пожалуйста, верните его обратно. 🙂
@tomcat23 — В этом месте вода под мостом. Все, что я хочу сказать, это то, что я не заинтересован в том, чтобы возлагать вину, я просто хочу, чтобы все двигались вперед с миром. 🙂
@MikeSchinkel Да, ты прав. @kaiser Прошу прощения, если я вас оскорбил.
@MikeSchinkel: спасибо, что вернул мир. @tomcat23: Нет, ты этого не сделал. Я могу принять такую критику. Мои извинения тоже.
Источник: bueltge.de/wordpress-feeds-deaktivieren/794 (Фрэнк Бюльтге)
Спасибо Тошо! источник также доступен на английском языке wpengineer.com/287/disable-wordpress-feed
Разве это уже нельзя отредактировать на стороне PHP, чтобы он вообще не выводился?
Здесь, в версиях 3.0+, это точно работает, но почему не в более старых версиях? Проверьте, не отвечает ли за это какой-либо другой плагин, который вы используете. Текст здесь заменен на JQuery, может быть, плагин JQuery?
Включить скрытую функцию администрирования, отображающую все настройки сайта
Протестировано на: WordPress 3.1 RC3
Этот небольшой фрагмент кода делает что-то очень крутое. Это добавит дополнительную опцию в ваше меню настроек со ссылкой на «все настройки», которая покажет вам полный список всех настроек, которые у вас есть в вашей базе данных, связанных с вашим сайтом WordPress. Приведенный ниже код сделает эту ссылку видимой только для администратора и скроет ее для всех остальных пользователей.
Изменить логотип для входа и URL-ссылку на изображение
Протестировано на: WordPress 3.0.1
Этот код позволит вам легко изменить логотип страницы входа в WordPress, а также ссылку href и текст заголовка этого логотипа.
РЕДАКТИРОВАТЬ: Если вы хотите использовать логотип сайта для замены логотипа входа в систему, вы можете использовать следующее для динамического извлечения этой информации (проверено на WP3.5 ):
Включите пользовательские типы сообщений в результаты поиска.
Добавляйте настраиваемые типы сообщений в основную RSS-ленту вашего сайта по умолчанию.
Включить пользовательские типы сообщений в виджет панели администратора «Прямо сейчас».
Это будет включать ваши пользовательские типы сообщений и количество сообщений для каждого типа в виджете панели «Прямо сейчас».
Удалить уведомление об обновлении для всех пользователей, кроме пользователя ADMIN.
Протестировано на: WordPress 3.0.1
Этот код гарантирует, что никакие пользователи, кроме администратора, не будут уведомлены WordPress о доступных обновлениях.
Изменена версия, чтобы отображать уведомление об обновлении только для пользователей с правами администратора (а не только для пользователя «admin»):
Загрузка jQuery из Google CDN
Протестировано на: WordPress 3.0.1
Удалите информацию о версии WordPress для безопасности
Протестировано на: WordPress 3.0.1
Добавляйте спам и удаляйте ссылки на комментарии в интерфейсе пользователя
Протестировано на: WordPress 3.0.1
Это упрощает управление комментариями из внешнего интерфейса, добавляя спам и удаляя ссылки.**
Задержка публичной публикации в RSS-канале
Протестировано на: WordPress 3.0.1
Наконец, я люблю откладывать публикацию в свои RSS-каналы на 10-15 минут, потому что всегда нахожу как минимум пару ошибок в своем тексте. Другое использование — в случае, если вы хотите, чтобы контент был эксклюзивным для вашего сайта в течение дня или недели, прежде чем отправлять его своим читателям RSS.
Установите максимальное количество ревизий сообщений, чтобы избежать раздувания БД.
Протестировано на: WordPress 3.0.1
Значение по умолчанию бесконечно, и это заставит его запомнить только последние пять правок:
Что бы это ни стоило, есть масса отличных идей для КОНСТАНТОВ, которые можно установить на странице Кодекса Редактирование wp-config.php.
Инструменты профилирования WordPress
Мне нравится добавлять инструменты профилирования в отдельный файл, который затем при необходимости включаю из functions.php:
Повышение резкости изображений с измененным размером (только JPEG)
Эта функция повышает резкость изображений JPEG с измененным размером. Пример разницы:
Удалить мета-боксы WordPress по умолчанию
Протестировано на: WordPress 3.0.1
Этот код позволит вам удалить определенные мета-поля, которые WordPress по умолчанию добавляет на экраны «Добавить/редактировать запись» и «Добавить/редактировать страницу» по умолчанию.
Удалить фильтр «WordPress» в «WordPress»
Протестировано на: WordPress 3.0.1
В WordPress версии 3.0 был добавлен фильтр, который автоматически преобразует все экземпляры «Wordpress» (без заглавной P) в «WordPress» (с заглавной P) в содержимом постов, заголовках постов и тексте комментариев. Некоторые люди считают это навязчивым, но мне просто нужно время от времени ошибаться в регистре WordPress, и я нашел фильтр несколько раздражающим.
Настроить панель инструментов
Удалите эти виджеты панели инструментов…
Добавьте пользовательский виджет под названием «Справка и поддержка».
Это контент для вашего пользовательского виджета
Добавить настраиваемые поля профиля пользователя
Поместите приведенный ниже код в файл functions.php, чтобы добавить настраиваемые поля профиля пользователя. Отредактируйте или добавьте строки по своему усмотрению.
Не забудьте не удалять строку: return $contactmethods; иначе это не сработает.
Для отображения настраиваемых полей вы можете использовать один из двух способов, перечисленных ниже.
Опция 1:
Вариант 2:
Функция для изменения длины отрывка
Протестировано на: WordPress 3.0.1
По умолчанию все выдержки ограничены 55 словами. Используя приведенный ниже код, вы можете переопределить эти настройки по умолчанию:
В этом примере длина отрывка изменяется на 100 слов, но вы можете использовать тот же метод, чтобы изменить его на любое значение.
Настройте порядок меню администрирования
Протестировано на: WordPress 3.0.1
Этот код позволит вам реорганизовать порядок элементов в меню администрирования. Все, что вам нужно сделать, это нажать на существующую ссылку в меню администрирования и скопировать все, что находится перед URL-адресом /wp-admin/. Приведенный ниже порядок представляет собой порядок, в котором будет отображаться новое меню администрирования.
Добавить миниатюры в список «Управление сообщениями/страницами»
Вы можете добавить это в свои функции, чтобы отобразить в списке «Управление/редактирование публикации» и «Страницы» новый столбец с предварительным просмотром миниатюр.
Удалить пинги к собственному блогу
Протестировано на: WordPress 3.0.1
Включить сжатие вывода GZIP
Обычно сервер должен делать это автоматически, но многие общие хосты этого не делают (вероятно, чтобы увеличить пропускную способность клиента).
Отображение запросов к БД, затраченного времени и потребления памяти
Протестировано на: WordPress 3.0.1
Затем этот код ниже кода выше, который автоматически вставит приведенный выше код в нижний колонтитул вашего общедоступного веб-сайта (убедитесь, что ваша тема вызывает
wp_footer
):Его можно вызывать несколько раз.
Отменить регистрацию стандартных виджетов WordPress
Протестировано на: WordPress 3.0.1
Автоматическое извлечение первого изображения из содержимого публикации
Протестировано на: WordPress 3.0.1
Этот код автоматически извлечет первое изображение, связанное с публикацией, и позволит вам отобразить/использовать его, вызвав функцию getImage.
Вывести файл шаблона темы, который использует пост/страница в заголовке.
Сократите вывод DIV по умолчанию, если ваша тема использует post_class.
Если ваша тема использует что-то вроде
У вас могут быть сумасшедшие длинные элементы div в исходном коде, которые могут выглядеть так или даже длиннее:
Это может действительно начать загромождать ваш источник и в большинстве случаев показаться довольно ненужным, достаточно углубиться в 3-4 раза.
Для верхнего примера мы можем нарезать вывод следующим образом:
Это нарезает вывод, чтобы включить только первые 5 значений, поэтому приведенный выше пример становится таким:
Сделайте так, чтобы в архивах категорий отображались все сообщения, независимо от типа сообщения: подходит для пользовательских типов сообщений.
Удалите ненужные элементы панели инструментов
Это уже было опубликовано, но в нем не было полного списка предметов. Особенно эти раздражающие «входящие ссылки!»
Удалите переходы со страницы «Подробнее»**
Вместо этого вернитесь к началу страницы. Вы знаете, как, когда вы нажимаете «читать дальше», он перескакивает в нужное место на странице, что может раздражать, поэтому он просто загружает страницу в обычном режиме, без прыжков!
Ограничьте элементы меню ADMIN на основе имени пользователя, замените имя пользователя фактическим именем пользователя.
//в качестве альтернативы вы можете использовать if($current_user->user_login != ‘admin’) вместо этого, вероятно, более полезно
Стиль облака тегов
Полный справочник опций здесь (их много!) http://codex.wordpress.org/Function_Reference/wp_tag_cloud
Изменить таймер обновления виджета RSS по умолчанию
(По умолчанию 6 или 12 часов — забыл (1800 = 30 минут).
Удалить уведомление об обновлении плагина ТОЛЬКО для НЕАКТИВНЫХ плагинов
Удалите лишнюю информацию и HTML внутри
<head>
тегаВключите отладку ошибок и ведение журнала для использования на реальных сайтах
Это фрагмент кода, который я написал, чтобы использовать константы WP_DEBUG, которые обычно отключены по умолчанию. Ну, я придумал способ не только включить WP_DEBUG, чтобы вы могли использовать его на работающем сайте без отрицательных побочных эффектов, но я также использовал другие константы отладки для принудительного отображения ошибок и для создания файла журнала. ошибок и уведомлений в каталоге /wp-content.
Поместите этот код в свой файл wp-config.php (ПОСЛЕ СОХРАНЕНИЯ РЕЗЕРВНОЙ КОПИИ, НА СЛУЧАЙ), а затем вы можете передать параметры ?debug=1, 2 или 3 в конце любого URL-адреса на вашем сайте.
?debug=1 = показывает все ошибки/уведомления ?debug=2 = принудительно отображает их ?debug=3 = создает файл debug.log со всеми ошибками в каталоге /wp-content.
Я более подробно расскажу о гостевом посте, который я написал для Comluv, если вам интересно, здесь: http://comluv.com/dev/enable-debugging-and-logging-for-live-site-usage/
Я все еще работаю над тем, чтобы сделать это либо защищенным паролем, либо, желательно, каким-то образом заставить его работать с if (current_user_can(‘manage_themes’) и is_logged_in().
Но тут все становится намного сложнее.
Новые роли и возможности — запустите только один раз!
Я держу их под рукой, это правильный способ сделать их без плагина. Они устанавливают одно поле (prefix_user_roles) в базе данных опций, и вам не нужен плагин для их установки. Обратитесь к странице Codex за списком доступных возможностей и описанием того, что они делают. Вам нужно только раскомментировать один из этих блоков, загрузить любую страницу, а затем снова их прокомментировать! Здесь я создаю роль с нужными мне возможностями:
Иногда бывает удобно добавить/удалить существующую роль, а не удалять и добавлять ее заново. Опять же, вам нужно только раскомментировать его, перезагрузить страницу, а затем снова прокомментировать. Это позволит правильно сохранить роль/возможность в таблице опций. (Это позволяет вам, разработчику, контролировать их и устраняет накладные расходы на громоздкие плагины, которые делают то же самое.) Здесь я меняю роль автора, чтобы удалять его опубликованные сообщения (по умолчанию), но предоставляя им возможность редактировать их опубликованные сообщения (что невозможно для этой роли по умолчанию) — с помощью *add_cap* или *remove_cap*.
Я храню электронную таблицу с сеткой со страницы Кодекса для сайтов, которые модифицируют таким образом, поэтому я могу помнить, как все установлено, хотя оставить закомментированный код в вашем файле functions.php будет работать. Не оставляйте эти примеры без комментариев, иначе они будут записываться в базу данных при каждой загрузке страницы!
Автоматически добавлять динамические заголовки на общедоступные страницы
Протестировано на: WordPress 3.0.1
Использование приведенного ниже кода автоматически создаст динамические заголовки страниц на основе страниц/сообщений, просматриваемых публично.
Пользовательский нижний колонтитул администратора WordPress
Я использую это для клиентских сайтов как простую точку отсчета, чтобы связаться со мной как с разработчиком.
Включить шорткоды в виджетах
Функция отключения RSS-каналов
Протестировано на: WordPress 3.0.1
Вы можете отключить RSS-каналы, если хотите, чтобы ваш веб-сайт на основе WordPress оставался статическим.
Вы можете использовать эту функцию:
Измените сообщение «Привет» на «Добро пожаловать».
С помощью этой функции вы можете настроить сообщение «Привет» в правом верхнем углу панели администратора.
Эта функция использует JQuery для изменения сообщения «Привет» на «Добро пожаловать».
Версия PHP с использованием
gettext
фильтра: