json_decode()
, чтобы конвертировать в массив, пересобрать и вернуть в json обратно с помощью json_encode()
$json = '{"param1": "value1","param1": "value1","param1": "value1","param1": {},"param1": "value1"}';
$json = json_decode( $json, true );
var_dump($json); // печатает array(1) { ["param1"]=> string(6) "value1" }
wp_head()
в теме вообще есть?init
, after_setup_theme
и сравнивайте с дефолтной темой if ( is_front_page() && is_home() ) {
$html = '<div class="site-branding">';
$html .= '<h1 class="site-branding__title">' . get_bloginfo( 'name' ) . '</h1>';
$html .= '<p class="site-branding__description">' . get_bloginfo( 'description') . '</p>';
$html .= '</div>';
} else {
$html = '<a class="site-branding" href="' . esc_url( home_url( '/' ) ) . '" rel="home">';
$html .= '<h1 class="site-branding__title">' . get_bloginfo( 'name' ) . '</h1>';
$html .= '<p class="site-branding__description">' . get_bloginfo( 'description') . '</p>';
$html .= '</a>';
}
echo apply_filters( 'get_site_branding', $html );
GLOB_ONLYDIR
, чтобы просто узнать количество папок:$countDir = count( glob( 'includes/*', GLOB_ONLYDIR ) );
$date = date("d-m-Y");
$countDir = countDir($fileDir, $date);
var_dump($countDir);
function countDir( $path, $date, $count = 0 ) {
if( file_exists($path) && is_dir($path) ) {
$dirHandle = opendir($path);
while ( false !== ($file = readdir($dirHandle)) ) {
// исключаем папки с названием '.' и '..'
if ( $file != '.' && $file != '..' ) {
$filePath = $path . '/' . $file;
// если папка
if ( is_dir( $filePath ) ) {
// сраниваем $date с датой создания
if ( $date == date("d-m-Y", filectime($filePath)) ) {
$count++;
}
} // end if is_dir( $filePath )
}
} // end while
closedir($dirHandle);
}
return $count;
}
apply_filters()
, вы можете изменить вывод контента через дочернюю тему, написав соответствующий фильтрinit
, after_setup_theme
, фильтры контента, регулярки, может даже js $e->href = 'my link';
->find()
, будет критическая ошибкаremoveAttribute()
- это функция js, а не phpfile_put_contents()
возвращает false, в случае ошибки, пишите это условие для дебага ->clear()
. По какой-то причине он все равно остается в переменной, поэтому я делаю еще и unset()
. Закрывать директорию нужно после всех операцию, а не посреди циклаif ( $dh = opendir($dir) ) {
$data = file_get_html('index.html');
foreach( $data->find('div') as $div ){
if ( $div->class == 'col-md-12' ) {
$div->class = 'col-12 col-md-6';
}
}
$data->clear();
unset($data);
closedir($dh);
}
pathinfo()
$string = 'site.by/cat/subcat/name/';
var_dump(pathinfo($string, PATHINFO_BASENAME)); // выводим "name"
explode()
$string = 'site.by/cat/subcat/name/';
$string = preg_replace('/(\/)$/', '', $string); // убираем последний слеш если есть
$array = explode('/', $string); // делим строку на массив
$array = array_reverse($array); // переворачиваем
var_dump($array[0]); // выводим первый элемент "name"
$string = 'site.by/cat/subcat/name/';
$name = preg_replace('/(([\w\d\-\_\:\.\/]+)\/([^\/]+)[\/]?)$/', '$3', $string);
var_dump($name); // выводим "name"
$myQuery = new WP_Query( [
'meta_query' => [
'relation' => 'OR',
'price_exists' => [
'relation' => 'AND',
[
'key' => '_project_price',
'value' => $price_from,
'type' => 'DECIMAL',
'compare' => '>='
],
[
'key' => '_project_price',
'value' => $price_to,
'type' => 'DECIMAL',
'compare' => '<='
],
],
'price_empty' => [
'key' => '_project_price',
'compare' => 'EXIST',
],
],
'orderby' => [
'price_exists' => 'ASC',
'price_empty' => 'DESC',
],
] );
BETWEEN
найдет все ключи с заданным диапазоном между $price_from и $price_to, а второй NOT BETWEEN
- которые в диапазон не входят$myPosts = get_posts( array(
'numberposts' => -1,
'post_type' => 'product',
) );
foreach ( $myPosts as $key => $myPost ) {
// проверяем, что поля не существует
if ( get_post_meta( $myPost->ID, '_project_price', true ) == false ) {
update_post_meta( $myPost->ID, '_project_price', '' ); // пишем в него пустое значение
}
}
save_post
, чтобы при сохранении поста добавлялось пустое значение, если оно не указано