$args = [
'posts_per_page' => 1, // запись ведь у нас одна будет
'no_found_rows' => true, // не нужно SQL_CALC_FOUND_ROWS, запрос будет сильно быстрее выполняться
'post_type' => 'custom_post_type_name', // название кастомного типа записи
'post_status' => 'publish', // только опубликованные
// тут пишем meta или tax подзапрос (см. ссылки на документацию выше)
];
$query = new WP_Query( $args );
// Наш пост будет в массиве $query->posts
$post = reset( $query->posts );
// Ну или делайте обычный WordPress Loop - тут уж как удобнее.
/**
* Use one template for both post type archive and taxonomy archive.
*
* @param string $template
* @return string
*/
function goods_shared_archive_template( $template )
{
if ( is_post_type_archive( 'goods' ) || is_tax( 'goods-taxonomy' ) ) {
return locate_template( [ 'goods-archive.php' ] );
}
return $template;
}
add_filter( 'template_include', 'goods_shared_archive_template', 99 );
function posts_default_order( $query )
{
// Прекращаем выполнение, если это не главный запрос и мы не в админке.
if( ! $query->is_main_query() || ! is_admin() ) {
return;
}
// Значения: date/post_date, modified/post_modified.
$query->set( 'orderby', 'date' );
$query->set( 'order', 'DESC' );
}
add_action( 'pre_get_posts', 'posts_default_order' );
remove_action( 'register_new_user', 'wp_send_new_user_notifications' );
remove_action( 'register_new_user', 'wp_send_new_user_notifications' );
add_action( 'register_new_user', 'notify_only_user' );
function notify_only_user( $user_id, $notify = 'user' )
{
wp_send_new_user_notifications( $user_id, $notify );
}
// Берем входящий массив:
$input = [
[
'gq_address' => '188.120.254.140',
'gq_hostname' => '• RGPlay | DarkRP [Быстрая загрузка]',
'gq_maxplayers' => 128,
'gq_numplayers' => 0,
'gq_online' => true,
'gq_port_client' => 27015,
],
[
'gq_address' => '62.109.18.242',
'gq_hostname' => 'Default Breach Server',
'gq_maxplayers' => 128,
'gq_numplayers' => 0,
'gq_online' => true,
'gq_port_client' => 27015,
],
];
// Определяем желаемый порядок ключей:
$order = [
'gq_hostname',
'gq_address',
'gq_port_client',
'gq_online',
'gq_numplayers',
'gq_maxplayers',
];
// Перебираем элементы входящего массива и сортируем их по ключам:
$output = array_map( function($array) use ($order)
{
// Эта функция сортирует по ключам
uksort( $array, function($a, $b) use ($order)
{
$a_desired_position = array_search($a, $order, true);
$b_desired_position = array_search($b, $order, true);
// Вот тут вся магия:
// нужно вернуть отрицательное число, 0 или положительное число,
// в зависимости от положения одного элемента относительно другого.
return $a_desired_position - $b_desired_position;
} );
return $array;
}, $input );
var_dump($input);
var_dump($output);
// Входящий массив:
array:2 [▼
0 => array:6 [▼
"gq_address" => "188.120.254.140"
"gq_hostname" => "• RGPlay | DarkRP [Быстрая загрузка]"
"gq_maxplayers" => 128
"gq_numplayers" => 0
"gq_online" => true
"gq_port_client" => 27015
]
1 => array:6 [▼
"gq_address" => "62.109.18.242"
"gq_hostname" => "Default Breach Server"
"gq_maxplayers" => 128
"gq_numplayers" => 0
"gq_online" => true
"gq_port_client" => 27015
]
]
// Отсортированный массив:
array:2 [▼
0 => array:6 [▼
"gq_hostname" => "• RGPlay | DarkRP [Быстрая загрузка]"
"gq_address" => "188.120.254.140"
"gq_port_client" => 27015
"gq_online" => true
"gq_numplayers" => 0
"gq_maxplayers" => 128
]
1 => array:6 [▼
"gq_hostname" => "Default Breach Server"
"gq_address" => "62.109.18.242"
"gq_port_client" => 27015
"gq_online" => true
"gq_numplayers" => 0
"gq_maxplayers" => 128
]
]
<div class="container">
<div class="row">
<?php
$args = [
'post_status' => 'publish',
'posts_per_page' => 5,
'no_found_rows' => true,
'cache_results' => true,
'update_post_meta_cache' => false,
'update_post_term_cache' => false,
];
$query = new WP_Query( $args );
while ( $query->have_posts() ) : $query->the_post();
// 1я запись, целиком в .col-6
if ( $query->current_post === 0 )
{
echo '<div class="col-6">'; // Открыли .col-6
echo '<div class="post-card">';
the_post_thumbnail( 'custom-size', [ 'class' => 'img-fluid' ] );
the_title();
echo '</div>';
echo '</div>'; // Закрыли .col-6
}
// 2я и 4я записи, только открываем .col-3 и выводим 1 запись
if ( $query->current_post === 1 || $query->current_post === 3 )
{
echo '<div class="col-3">'; // Открыли .col-3
echo '<div class="post-card">';
the_post_thumbnail( 'custom-size', [ 'class' => 'img-fluid' ] );
the_title();
echo '</div>';
}
// 3я и 5я записи, выводим запись и закрываем .col-3
if ( $query->current_post === 2 || $query->current_post === 4 )
{
echo '<div class="post-card">';
the_post_thumbnail( 'custom-size', [ 'class' => 'img-fluid' ] );
the_title();
echo '</div>';
echo '</div>'; // Закрыли .col-3
}
endwhile; ?>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="post-card">
...
</div>
</div>
<div class="col-3">
<div class="post-card">
...
</div>
<div class="post-card">
...
</div>
</div>
<div class="col-3">
<div class="post-card">
...
</div>
<div class="post-card">
...
</div>
</div>
</div>
.col-6 .col-3 .col-3
------ ------ ------
post-1 post-2 post-4
post-3 post-5
.col-6 .col-3 .col-3
------ ------ ------
post-1 post-2 post-3
post-4 post-5