Правильно ли так оформлять функции темы WP?

Ссылка скопирована
0 ответов

Вопрос к знатокам WP
Сейчас натягиваю тему и увидел такой подход
в functions.php
Подключаю php файл, например такой

require get_template_directory() . '/core/modules/post-upgrade.php';

require get_template_directory() . '/core/modules/post-upgrade.php';

дабы разбить всё по полочкам а не городить все в functions

Далее в post-upgrade.php

<?php  if (!defined('WPINC')) {     die; }  class PostArticle {      public static function load_module()     {         add_action('Post__theme-article-grid_label_partner', [__CLASS__, 'single_label_partner_grid'], 100);     }      public static function single_label_partner_grid($post_id)     {         $post_type = get_post_type($post_id);          $field_db = get_post_meta($post_id, '_advert_post_front', true);          if ($field_db == 'on') : ?>              <div class="button button_partner button_size_small button_theme_default <?php echo ('advert_post' == $post_type) ? 'special-project-color' : ''; ?>">                 <svg class="icon button__partner-icon">                     <use xlink:href="<?php bloginfo('template_url'); ?>/assets/img/icons/sprite.svg#i-money"></use>                 </svg>                 <?php if ('advert_post' == $post_type) : ?>                     <span>Спецпроект</span>                 <?php else : ?>                     <span>Партнерский материал</span>                 <?php endif; ?>             </div> <?php         endif;     } }  PostArticle::load_module();

<?php if (!defined('WPINC')) { die; } class PostArticle { public static function load_module() { add_action('Post__theme-article-grid_label_partner', [__CLASS__, 'single_label_partner_grid'], 100); } public static function single_label_partner_grid($post_id) { $post_type = get_post_type($post_id); $field_db = get_post_meta($post_id, '_advert_post_front', true); if ($field_db == 'on') : ?> <div class="button button_partner button_size_small button_theme_default <?php echo ('advert_post' == $post_type) ? 'special-project-color' : ''; ?>"> <svg class="icon button__partner-icon"> <use xlink:href="<?php bloginfo('template_url'); ?>/assets/img/icons/sprite.svg#i-money"></use> </svg> <?php if ('advert_post' == $post_type) : ?> <span>Спецпроект</span> <?php else : ?> <span>Партнерский материал</span> <?php endif; ?> </div> <?php endif; } } PostArticle::load_module();

Вот вопрос к этому файлу, насколько это не колхоз? правильно ли с точки зрения WP так организовывать функции.

Ну и в самой теме вывожу через хук

<?php do_action('Post__theme-article-grid_label_partner', get_the_ID()); ?>

<?php do_action('Post__theme-article-grid_label_partner', get_the_ID()); ?>

Хочу разбить на несколько таких файлов, чтоб где то лежали фукнции для главной, где то для single и т.д.

Дополнительно:

Как вообще можно что-то делать не зная даже что как называется (терминологию)?
Начинай делать правильно, а не натягивать презервативы куда не следует.

  • Refguser, Так а в чём подход не правильный? Можно это писать всё в functions.php а так разбить это разве плохо?
  • Ответы:

    Есть вариант, приближенный к нормальным подходам

    условно в вашем index.php

    do_action("my_content");

    Пример контента для author.page (надеюсь вы понимаете, что этот код не вставляется в author.php)

    class AuthorPage {   public function __construct()   {   	add_action('content', [$this, 'template']);   }      public function data(): array   {   	global $wp_query; 	$user = $wp_query->get_queried_object(); 	 	if (!($user instanceof WP_User)) { 		return []; 	} 	   	return [   	    'title' => $user->first_name,   	];   }      public function template(): void   {   	if (!is_author()) { 		return; 	}      	get_template_part("template-parts/author", null, [...$this->data()]);   } }

    class AuthorPage { public function __construct() { add_action('content', [$this, 'template']); } public function data(): array { global $wp_query; $user = $wp_query->get_queried_object(); if (!($user instanceof WP_User)) { return []; } return [ 'title' => $user->first_name, ]; } public function template(): void { if (!is_author()) { return; } get_template_part("template-parts/author", null, [...$this->data()]); } }

    сам template-parts/author.php:

    <?php echo esc_html($args['title'] ?? ''); ?>

    Идея нормальных подходов в том, чтобы не мешать логику и верстку. Все данныe получаете в классе, и передаете в теплейт, где уже и верстаете

    Правильно ли так оформлять функции темы WP?

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно