Поддержка Проблемы и решения Хук sanitize_title только на странице поста для slug

  • Решено ZetRider

    (@zetrider)


    Добрый вечер,

    столкнулся с проблемой:

    необходимо активировать хук только на странице с редактированием поста или страницы и только для заголовков (slug).

    get_current_screen — не поможет

    В плагине Cyr to Lat нашел решение:

    if ( !empty($_POST) || !empty($_GET['action']) && $_GET['action'] == 'edit' || defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) {
    	//
    }

    но это больше костыль.

    Каким способом можно реализовать? Или есть другой хук? Нашел editable_slug но я в нем не уверен, что конкретно он делает и когда вызывается.

    p.s. Цель — пошаманить с slug при создании или редактировании записи / страницы.
    т.к. sanitize_title используется не только для заголовков, мой хук сильно начинает тормозить админку, да и не везде его нужно применять.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    В плагине Cyr to Lat нашел решение

    Оно устарело, в следующей версии уберу 🙂

    В WordPress 3.3 для sanitize_title был добавлен параметр context:
    https://core.trac.wordpress.org/changeset/15929

    Т.е. можно написать примерно следующее:

    function my_slug_filter( $title, $raw_title, $context ) {
    	if ( 'save' != $context ) {
    		return $title;
    	}
    
    	// ваш код
    
    	return $title;
    }
    add_filter( 'sanitize_title', 'my_slug_filter', 10, 3 );

    Сергей, спасибо!

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Хук sanitize_title только на странице поста для slug» закрыта для новых ответов.