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возвращаетпозициюстрокивспискестрок,разделенныхзапятыми。

text ВывестирезультатформированияСКДвтаблицузначений

text ФункциявалидацииформынаPHP