WordPress notes

Ищем экранированные функции

# находясь в папке сайта
grep '@[a-z,_,0-9]*(' ./ -r --include=*.php

Отключить FTP

define('FS_METHOD', 'direct');

Смена домена в БД

Префикс БД может быть другим.

SELECT option_value from wp_options where option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_options SET option_value = 'NEW' WHERE option_name = 'home' OR option_name = 'siteurl';

DEBUG и Логирование

Лог-файл ./wp-content/debug.log

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
define('SAVEQUERIES', true);        

Генерировать Sitemap.XML без плагина

Добавить в /wp-includes/functions.php

add_action( "save_post", "eg_create_sitemap" );   
function eg_create_sitemap() {
    $postsForSitemap = get_posts( array(
        'numberposts' => -1,
        'orderby'     => 'modified',
        'post_type'   => array( 'post', 'page' ),
        'order'       => 'DESC'
    ) );
    $sitemap = '';
    $sitemap .= "\n" . '' . "\n";    
    foreach( $postsForSitemap as $post ) {
        setup_postdata( $post );   
        $postdate = explode( " ", $post->post_modified );   
        $sitemap .= "\t" . '' . "\n" .
            "\t\t" . '' . get_permalink( $post->ID ) . '' .
            "\n\t\t" . '' . $postdate[0] . '' .
            "\n\t\t" . 'monthly' .
            "\n\t" . '' . "\n";
    }     
    $sitemap .= '';     
    $fp = fopen( ABSPATH . "sitemap.xml", 'w' );
    fwrite( $fp, $sitemap );
    fclose( $fp );
}

поставить Сайт на обслуживаниие

создать в корне файл .maintenance с содержимым:

 $value ) {
        if ( stristr($cookie, 'wordpress_logged_in_') )
        $loggedin = true;
        }
        return $loggedin;
    }
    if ( !stristr($_SERVER['REQUEST_URI'], '/wp-admin/') && !stristr($_SERVER['REQUEST_URI'], '/wp-login.php') && !is_user_logged_in() ) $upgrading = time();
?>

Отключить обновление ТЕМ

Вариант 1
Переименовать папку с темой
Внутри папки с темой в Style.css исправляем имя/версию темы.

Вариант 2
Файл functions.php. В самый конец добавляем

// обновление тем отключаем
remove_action( 'load-update-core.php', 'wp_update_themes' );
add_filter( 'pre_site_transient_update_themes', '__return_null' );

Скрытие защищенных паролем постов в Вордпрессе

в файл functions.php

function wpb_password_post_filter( $where = '' ) {
    if (!is_single() && !is_admin()) {
        $where .= " AND post_password = ''";
    }
    return $where;
}
add_filter( 'posts_where', 'wpb_password_post_filter' );

Create administrator

Create “mu-plugins” directory in “wp-content”
Create a new file new_admin.php, with content bellow

set_role( 'administrator' );
  }
  
} );

Login to the site with this USERNAME/PASSWORD.
After login – delete “wp-content/mu-plugins”