php Вызовыифункциивwp
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php Вызовыифункциивwp相关的知识,希望对你有一定的参考价值。
скачать ранний релиз cf7 https://downloads.wordpress.org/plugin/contact-form-7.[VERSION].zip
\___________________________
<!-- Шапка -->
___________________________
<?php get_header(); ?>
<?wp_head();?>
<?php bloginfo('template_directory'); ?> <!-- Путь к папке темы -->
<?
## JS в head документа. хук для вставки в head при условии страницы
add_action('wp_head','hook_javascript');
function hook_javascript() {
if (is_page('booking')){
echo '<script src="//cdn.jsdelivr.net/g/jquery@1.11.0"></script>
<script src="//cdn.jsdelivr.net/jquery.cookie/1.4.0/jquery.cookie.min.js"></script>';
}
}
?>
<!-- Контент -->
<? the_post_thumbnail('mediumm')?> <!-- Миниатюра поста. размеры thumbnail, medium, large, full или массивом из двух элементов (ширина и высота картинки): array(32, 32). -->
<!-- Вывод меню зарегестрированного в теме -->
<?wp_nav_menu(array(
'theme_location' => 'h_main_menu',
'container' => false,
'menu_id' => 'main-menu-mobile'
));?>
<!-- вывод меню через волкер -->
<?
require_once('walker_bem_menu.php'); //подключение волкера
wp_nav_menu(array(
"theme_location" => "h_menu",
"container" => "div",
"container_class" => "nav__drop",
"menu_class" => "nav__list",
"menu_id" => "menu",
"walker" => new walker_bem_menu('header'),
));
?>
<?php get_sidebar();?> <!-- Вызов сайдбара -->
______________________
<!-- FUNCTIONS -->
______________________
<?php
// Изменение логотипа на странице входа в админке.
function my_custom_login_logo(){
echo '<style type="text/css">
h1 a { background-image:url('.get_bloginfo('template_directory').'/images/logo-multi.png) !important; background-size: 50% 50% !important; display: block; width:100% !important; }
</style>';
}
add_action('login_head', 'my_custom_login_logo');
/*+++++++++++++++++++++++++++++++++++*/
// Включение поддержки шорткодов в рубрике
add_filter( 'term_description', 'shortcode_unautop');
add_filter( 'term_description', 'do_shortcode' );
/*** удаляем стр. вложения медиа КАРТИНКИ ***/
add_action('template_redirect', 'template_redirect_attachment');
function template_redirect_attachment() {
global $post;
// Перенаправляем на основную запись:
if (is_attachment()) {
wp_redirect(get_permalink($post->post_parent), 301);
}
}
/*** ФИН удаляем стр. вложения медиа КАРТИНКИ ***/
function genesis(){} //убирает ссылку с главной на вторую страницу вида <link rel="next"
// Подключение стилей и скриптов
add_action( 'wp_enqueue_scripts', 'theme_name_scripts' );
function theme_name_scripts() {
wp_enqueue_style( 'bootstrap', get_template_directory_uri() .'/css/bootstrap.css');
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', get_template_directory_uri() . '/js/jquery.js');
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'main_slider', get_template_directory_uri(jquery) . '/js/jquery.kwicks-1.5.1.js', array(), '', true );
}
//обрезание описания рубрик в админке сайта start
function wph_trim_cats() {
add_filter('get_terms', 'wph_truncate_cats_description', 10, 2);
}
function wph_truncate_cats_description($terms, $taxonomies) {
if('category' != $taxonomies[0])
return $terms;
foreach($terms as $key=>$term) {
$terms[$key]->description = mb_substr($term->description, 0, 80);
if($term->description != '') {
$terms[$key]->description .= '...';
}
}
return $terms;
}
add_action('admin_head-edit-tags.php', 'wph_trim_cats');
//обрезание описания рубрик в админке сайта end
// убираем из запроса поиска страницы, категории по ID и выбираем категории в которых искать по id
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
$query->set('cat','159,254');
$query->set('category__not_in','13,25');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
?>
<?
// Регистрация меню в фале функций
add_action( 'after_setup_theme', 'theme_register_nav_menu' );
function theme_register_nav_menu() {
register_nav_menu( 'primary', 'Главное меню' );
}
// Проверка записи на наличие в дочерней рубрике категории
function post_is_in_descendant_category( $cats, $_post = null ){
foreach ( (array) $cats as $cat ) {
// get_term_children() accepts integer ID only
$descendants = get_term_children( (int) $cat, 'category');
if( $descendants && in_category( $descendants, $_post ) )
return true;
}
return false;
}
?>
<!-- А вот и сама проверка -->
<?
// Проверка принадлежности поста к категории "Фрукты" или любой вложенной в эту категорию категории.
if ( in_category( 11 ) || post_is_in_descendant_category( 11 ) ) {
// Здесь все "фрукты"
}?>
<?php
//функция для вывода комментариев в обратнои порядке, если не работает из админки
function wpb_reverse_comments($comments) {
return array_reverse($comments);
}
add_filter ('comments_array', 'wpb_reverse_comments'); ?>
________________________
<!-- Убираем шортлинки из заголовка ответа сервера. -->
<? remove_action( 'template_redirect', 'wp_shortlink_header', 11 );
remove_action ( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
?>
<!-- Для объявление своих размеров в functions -->
<? if ( function_exists( 'add_image_size' ) ) {
add_image_size( 'project-thumb', 239, 239, true);
add_image_size( 'catalog-thumb', 190, 180, true);
add_image_size( 'category-thumb', 320, 180, true );
add_image_size( 'reviews-thumb', 340, 300, array( 'top', 'top' ) );
add_image_size( 'work-thumb', 369, 264, array( 'center', 'center' ) );
}
// Добавляем новый размер в админку
add_filter( 'image_size_names_choose', 'my_custom_sizes' );
function my_custom_sizes( $sizes ) {
return array_merge( $sizes, array(
'category-thumb' => 'Мой размерчик',
) );
}
?>
<!-- подробный вывод миниатюры с размерами и присвоением классов -->
<?php the_post_thumbnail( array(100,100), array('class' => 'alignleft obj-f')); ?>
<!-- получение урла миниатюры размера medium -->
<?php the_post_thumbnail_url( 'medium' ); ?>
<!-- Включение поддержки миниатюр -->
<?php add_theme_support('post-thumbnails'); ?>
<? //режет количество слов перед подробнее
function new_excerpt_length($length) {
return 10; //количество слов
}
add_filter('excerpt_length', 'new_excerpt_length');
add_filter('excerpt_more', function($more) {
return '...';
}); ?>
<!-- Функция для убирания ЦИКЛИЧЕСКИХ ССЫЛОК из меню, для стандартного меню. Для волкера надо заменить условие поиска пример заменить current-menu-item на nav__item-active и проставить класс для ссылки -->
<? function no_link_current_page( $p ) {
return preg_replace( '%((current_page_item|current-menu-item)[^<]+)[^>]+>([^<]+)</a>%', '$1<a class="nav__link">$3</a>', $p, 1 );
}
add_filter('wp_nav_menu', 'no_link_current_page');
?>
<?
// Добавляем ссылку с настрйоками сайта в шапку (меняем ID на id страницы настройки)
add_action( 'admin_bar_menu', 'toolbar_link_to_mypage', 999 );
function toolbar_link_to_mypage( $wp_admin_bar ) {
$args = array(
'id' => '21388',
'title' => 'Настройка сайта',
'href' => '/wp-admin/post.php?post=21388&action=edit',
'meta' => array( 'class' => 'my-toolbar-page' )
);
$wp_admin_bar->add_node( $args );
}
/*
* Убираем /category/ из чпу
**/
add_filter('category_link', create_function('$a', 'return str_replace("category/", "", $a);'), 9999);
//набор отключений разного ненужного мусора
// CLEAR
add_filter('rest_enabled', '__return_false');
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
remove_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 );
remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );
remove_action( 'auth_cookie_malformed', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_expired', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_username', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_hash', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_valid', 'rest_cookie_collect_status' );
remove_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );
//протестировал на сайте сдоставкой форму (cf7 ver 4.6 и выше) работает и мусор убирается
// remove_action( 'init', 'rest_api_init' );
// remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
// remove_action( 'parse_request', 'rest_api_loaded' );
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action( 'wp_head', 'wp_resource_hints', 2 );
remove_action('wp_head','wp_shortlink_wp_head');
remove_action( 'template_redirect', 'wp_shortlink_header', 11 );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wp_generator' );
//новое проверить
// Уберем ссылки на rss категории:
remove_action('wp_head','feed_links_extra', 3);
// Уберем ссылки на основной rss, а также rss комментариев:
remove_action('wp_head','feed_links', 2);
// Удаляем link rel=EditURI, сервис Really Simple Discovery:
remove_action('wp_head','rsd_link');
// Удалим различные ссылки при отображении постов: следующий, предыдущий...
remove_action('wp_head','start_post_rel_link',10,0);
remove_action('wp_head','index_rel_link');
remove_action('wp_head','adjacent_posts_rel_link_wp_head', 10, 0 );
function my_remove_x_pingback( $headers ) {
unset( $headers['X-Pingback'] );
return $headers;
}
add_filter( 'wp_headers', 'my_remove_x_pingback' );
// Если вы хотите убрать стили и скрипты из какого-либо модуля, то найдите в модуле строку следующего типа, он подключает экшн в ту или иную часть сайта:
add_action('wp_head', 'plugin_function_here')
// Для удаления можете воспользоваться следующей конструкцией, посмотрите на код ниже и код выше, сравните их и думаю поймете в чем суть, такого способа:
remove_action('wp_head', 'plugin_function_here');
?>
______________________
<!-- END FUNCTIONS -->
______________________
<!-- Стандартный цикл wp -->
<?php
if( have_posts() ){ while( have_posts() ){ the_post(); ?>
<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
</div>
<?php } /* конец while */ ?>
<div class="navigation">
<div class="next-posts"><?php next_posts_link(); ?></div>
<div class="prev-posts"><?php previous_posts_link(); ?></div>
</div>
<?php
} // конец if
else
echo "<h2>Записей нет.</h2>";
?>
<?php the_permalink(); ?> <!-- Ссылка на пост -->
<?php global $page, $paged; wp_title( '', true, 'right' );?> <!-- Заголовок сайта -->
<?php bloginfo('name'); echo ' - '; is_front_page() ? bloginfo('description') : wp_title(''); ?><!-- Заголовок для front-page -->
<?php the_title();?> <!-- Заголовко поста. выводится в цикле -->
<?php kama_breadcrumbs(' » '); ?> <!-- Хлебные крошки от kama. В скобках разделитель -->
<!-- Вывод определенного количества постов из определенной рубрики -->
<?php
$i = 1; //счетчик для разных нужд
$the_query = new WP_Query('&cat=56&showposts=3'); //id рубрики и кол-во постов
while ($the_query->have_posts()) : $the_query->the_post();
$do_not_duplicate = $post->ID; ?>
<!-- здесь верстка и контент -->
<? endwhile;
wp_reset_query();
?>
<?php wp_pagenavi(); ?> <!-- Вывод пагинации с помощью pagenavi - плагина -->
______________________
<!-- Подвал -->
_______________________
<?wp_footer();?>
<?php get_footer(); ?>
<!-- Запрос до выполнения основного WP_query для индивидуальных настроек
Ниже пример уменьшения отображаемого количества постов в определенной категории с рабочей пагинацией -->
<?
add_action('pre_get_posts', 'self_func' );
function self_func( $query ) {
// Выходим, если это админ-панель или не основной запрос.
if( is_admin() || ! $query->is_main_query() )
return;
if( is_category(391) ){
// Выводим 4 постов на странице категории с ид 391
$query->set( 'posts_per_page', 4 );
}
}
// Условие в сингл.пхп для применения разных шаблонов
$post = $wp_query->post;
if (in_category(391)){
include(TEMPLATEPATH.'/simple.php');
} elseif (in_category('articles')) {
include(TEMPLATEPATH.'/single-articles.php');
} elseif (in_category('news')) {
include(TEMPLATEPATH.'/single-news.php');
} elseif (has_tag()) {
include(TEMPLATEPATH.'/single-text.php');
} else {
include(TEMPLATEPATH.'/single-default.php');
}
// Несколько сайдбаров
get_sidebar( 'left' ); // шаблон sidebar-left.php
get_sidebar( 'right' ); // шаблон sidebar-right.php
// Пример вывода рубрик и их настроек в любом шаблоне
$args = array(
'type' => 'post',
'parent' => '',
'orderby' => 'id',
'order' => 'ASC',
'hide_empty' => 0,
'hierarchical' => 1,
'exclude' => '',
'include' => '6, 7, 8',
'number' => 0,
'depth' => 1,
'taxonomy' => 'category',
'pad_counts' => false,
'title_li' => '',
);
$categories = get_categories( $args );
if( $categories ):?>
<?foreach( $categories as $cat ):?>
<div class="catalog__item">
<a class="catalog__link" href="<?=get_category_link($cat->cat_ID)?>">
<div class="catalog__image"><img src="<?= z_taxonomy_image_url($cat->cat_ID); ?>" alt=""></div>
<div class="catalog__title"><?= $cat->cat_name; ?></div>
</a>
</div>
<?endforeach; endif;
___________________________
// Работа с ACF pro
___________________________
// Получение в категорию полей из acf. в переменную кат получаем ИД текущей категории
$cat = $GLOBALS['cat'];
$queried_object = get_queried_object();
$before_text = get_field('beforeIconsText', $queried_object);
$opt = get_field('catOptions', $queried_object);
// Вызов на странице насройки сайта по ид// корявый способ
global $site;
$site_query = new WP_Query('page_id=21458');
while ($site_query->have_posts()) : $site_query->the_post();
$site = get_field_objects($post->ID);
endwhile; wp_reset_query();
//комментарии - отзывы
/**убираем мз формы комментариев поле - сайт**/
function add_comment_fields($fields) {
unset($fields['url']);
return $fields;
}
//убрать вывод "Рубрик нет"" для wp_list_categories
function noEmptyCat($output) {
if($output == "<li>Нет рубрик</li>") $output = "";
return $output;
}
add_filter('wp_list_categories', 'noEmptyCat');
/* Remove Images From Yoast Sitemap */
add_filter( 'wpseo_xml_sitemap_img', '__return_false' );
?>
<?____________________________________
// Регулярные выражения и другие мелочи
____________________________________
// регулярка для получения только цифр из значения
$mod_tel= preg_replace('/[^\d+]/', '', $value['item_phone']);
?>
以上是关于php Вызовыифункциивwp的主要内容,如果未能解决你的问题,请参考以下文章
markdown JS - Шаблонывызовафукнций
php Вытаскиваемценуизэлементаинфоблока。
php Изменениепеременныхвнутрифункции(ивстроеных)
text ФункцияMySQLFIND_IN_SETвозвращаетпозициюстрокивспискестрок,разделенныхзапятыми。