login_redirect
add_filter( 'login_redirect', 'login_redirect', 10, 3 );
function login_redirect( $redirect_to, $request, $user ) {
if ( is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
return get_edit_user_link( $user->ID );
}
return $redirect_to;
}
woocommerce_login_redirect
, можете попробовать использовать егоadd_filter( 'woocommerce_login_redirect', 'filter_function_name_7289', 10, 2 );
function filter_function_name_7289( $remove_query_arg, $user ){
// filter...
return $remove_query_arg;
}
var_dump( get_option( 'rewrite_rules', false ) );
var_dump( get_option( 'widget_categories', false ) );
var_dump( get_option( 'wp_user_roles', false ) );
var_dump( get_option( 'cron', false ) );
var_dump( get_post_meta( get_the_ID(), '_schema_json', true ) );
while ( have_posts() )
— это цикл перебора постов из глобального запросаthe_post()
— функция устанавливает переменную $post для работы функций the_title()
, the_content()
и подобныеWP_Query()
, то и переменные устанавливаются из этого же запроса ( $query->have_posts(), $query->the_post() )// Задаем нужные нам критерии выборки данных из БД
$args = array(
'posts_per_page' => 5,
'orderby' => 'comment_count'
);
$query = new WP_Query( $args );
// Цикл
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
the_title(); // Заголовок
the_content(); // Контент
}
} else {
// Постов не найдено
}
// Возвращаем оригинальные данные поста. Сбрасываем $post
wp_reset_postdata();
get_posts()
— это обертка для класса WP_Query
с несколькими предустановленными параметрами. Установка переменной $post делается с помощью функции setup_postdata()
и в целом тот же цикл выглядит немного по другому// Задаем нужные нам критерии выборки данных из БД
$args = array(
'posts_per_page' => 5,
'orderby' => 'comment_count'
);
$my_posts = get_posts( $args );
// Цикл
if ( $my_posts ) {
foreach ( $my_posts as $key => $post ) {
setup_postdata( $post );
the_title(); // Заголовок
the_content(); // Контент
}
} else {
// Постов не найдено
}
// Возвращаем оригинальные данные поста. Сбрасываем $post
wp_reset_postdata();
the_title()
, the_content()
, get_template_part()
и т.д., вместо их использования вы можете доставать данные напрямую из объекта. Например, такая конструкция тоже будет работать$args = array(
'posts_per_page' => 5,
'orderby' => 'comment_count'
);
$my_posts = get_posts( $args );
foreach ( $my_posts as $key => $post ) {
echo $post->post_title; // Заголовок
echo $post->post_content; // Контент
}
$args = [
'post_type' => 'info',
'posts_per_page' => 24,
'tax_query' => [
'relation' => 'AND',
[
'taxonomy' => 'city',
'field' => 'name',
'terms' => [ 'Рязань' ]
],
[
'taxonomy' => 'categ',
'field' => 'name',
'terms' => [ 'МВД' ]
]
]
];
$query = new WP_Query( $args );
// Цикл.
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
the_title(); // выводим заголовок
}
} else {
// Постов не найдено
}
// Возвращаем оригинальные данные поста. Сбрасываем $post.
wp_reset_postdata();
get_the_content()
. Универсальных методов решения вашей задачи НЕТ. Вы можете разобрать строку регулярками или использовать какой-нибудь DOM-парсер, например Simple HTML DOM Parserthe_content
add_filter( 'the_content', 'filter_function_name_11' );
function filter_function_name_11( $content ) {
// Фильтр...
return $content;
}
get_the_terms()
— получает элементы таксономии (термины), которые относятся к указанному посту (записи)$terms = get_the_terms( $post->ID, 'city' );
if( is_array( $terms ) ) {
foreach ( $terms as $key => $term ) {
echo '<a href="' . get_term_link( $term->term_id, $term->taxonomy ) . '">' . $term->name . '</a>,';
}
}
wpautop
заменяет двойной перенос строки на HTML конструкцию <p>...</p>
, а одинарный на <br>
add_filter( 'term_description', 'wpautop' );
add_filter( 'get_the_post_type_description', 'wpautop' );
add_filter( 'the_content', 'wpautop' );
add_filter( 'the_excerpt', 'wpautop' );
add_filter( 'comment_text', 'wpautop', 30 );
add_filter( 'widget_text_content', 'wpautop' );
add_filter( 'the_excerpt_embed', 'wpautop' );
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
<?php get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<?php
the_archive_title( '<h1 class="page-title">', '</h1>' );
the_archive_description( '<div class="taxonomy-description">', '</div>' );
?>
</header>
<?php while ( have_posts() ) :
the_post();
get_template_part( 'template-parts/content', get_post_format() );
endwhile;
the_posts_pagination(
array(
'prev_text' => __( 'Previous page', 'twentysixteen' ),
'next_text' => __( 'Next page', 'twentysixteen' ),
'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
)
);
else :
get_template_part( 'template-parts/content', 'none' );
endif; ?>
</main>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
get_category_link()
по переданному $category_id. На будущее вам пригодится иерархия шаблонов WordPress add_filter()
и add_action()
<?php $acf_slid = get_sub_field( 'acf_slid' ); ?>
<?php if ( $acf_slid ) { ?>
<a href="<?php echo $acf_slid['url']; ?>"><img src="<?php echo $acf_slid['url']; ?>" alt="<?php echo $acf_slid['alt']; ?>" /></a>
<?php } ?>
the_post_thumbnail()
или get_the_post_thumbnail()
$size = 'post-thumbnail';
$attr = array(
'class' => 'attachment-' . $size,
'alt' => the_title_attribute(),
);
the_post_thumbnail( $size, $attr );
.attr()
нужно передавать переменную, а не строкуjQuery( 'img' ).attr( 'title', image_alt );
<?php get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main">
<?php while ( have_posts() ) :
the_post();
get_template_part( 'content', get_post_format() );
if ( comments_open() || get_comments_number() ) :
comments_template();
endif;
the_post_navigation(
array(
'next_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Next', 'twentyfifteen' ) . '</span> ' .
'<span class="screen-reader-text">' . __( 'Next post:', 'twentyfifteen' ) . '</span> ' .
'<span class="post-title">%title</span>',
'prev_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Previous', 'twentyfifteen' ) . '</span> ' .
'<span class="screen-reader-text">' . __( 'Previous post:', 'twentyfifteen' ) . '</span> ' .
'<span class="post-title">%title</span>',
)
);
endwhile; ?>
</main>
</div>
<?php get_footer(); ?>
$args = [
'part' => 'snippet', // какие параметры включить в ответ
'q' => 'WordPress', // поисковый запрос
'maxResults' => 50, // кол-во результатов в ответе
'key' => 'xxx', // ключ
];
$api_url = add_query_arg( $args, 'https://www.googleapis.com/youtube/v3/search' );
$json_result = wp_remote_get( $api_url );
$body = json_decode( $json_result['body'] );
var_dump( $body );
$args = [
'lat' => '43.671387', // широта
'lon' => '40.297416', // долгота
'appid' => 'xxx', // // ключ
'lang' => 'ru', // язык
];
$api_url = add_query_arg( $args, 'https://api.openweathermap.org/data/2.5/weather' );
$json_result = wp_remote_get( $api_url );
$body = json_decode( $json_result['body'] );
var_dump( $body );
$person_id = '967312'; // id персоны
$api_url = 'https://kinopoiskapiunofficial.tech/api/v1/staff/' . $person_id;
$args = array(
'headers' => array(
'X-API-KEY' => 'xxx', // ключ
'Content-Type' => 'application/json',
),
);
$json_result = wp_remote_get( $api_url, $args );
$body = json_decode( $json_result['body'] );
var_dump( $body );