PHP: Використовуйте API WordPress для створення короткого коду для переліку підсторінок
Зараз ми працюємо над досить складною реалізацією для корпоративного клієнта. Сайт створено на WordPress, але має масу наворотів. Часто, коли я виконую такий тип роботи, я люблю зберігати спеціальний код для подальшого використання на інших сайтах. У цьому випадку я вважав, що це така корисна функція, я хотів поділитися нею зі світом. Ми використовуємо Тема Avada WordPress із Fusion Page Builder як батьківської теми та розгортання досить великої кількості спеціального коду в нашій дочірній темі.
У API WordPress уже є кілька функцій, які можна використовувати для перерахування підсторінок, наприклад wp_list_pages і get_pages. Проблема полягає в тому, що вони не повертають достатньо інформації, якщо ви сподіваєтеся динамічно створити список із купою інформації.
Для цього клієнта вони хотіли опублікувати опис вакансій і автоматично створити список вакансій у порядку спадання за датою публікації. Вони також хотіли показати уривок сторінки.
Отже, спочатку нам потрібно було додати підтримку витягів до шаблону сторінки. У functions.php для їхньої теми ми додали:
add_post_type_support( 'сторінка', 'уривок');
Потім нам потрібно було зареєструвати спеціальний шорткод, який генерував би список підсторінок, посилань на них і витяг для них. Зробіть це, ми повинні використовувати Цикл WordPress. У functions.php ми додали:
// Список підсторінок у функції List dknm_list_child_pages( $atts, $content = "" ) { global $post; $atts = shortcode_atts( array( 'ifempty' => 'Немає записів', 'aclass' => '' ), $atts, 'list_subpages' ); $args = array( 'post_type' => 'page', 'posts_per_page' => -1, 'post_parent' => $post->ID, 'orderby' => 'publish_date', 'order' => 'DESC' , ); $parent = новий WP_Query( $args ); if ( $parent->have_posts() ) { $string .= $content.' '; while ( $parent->have_posts() ) : $parent->the_post(); $string .= ' '.get_the_title().' '; if ( has_excerpt( $post->ID ) ) { $string .= ' - '.get_the_excerpt(); } $рядок .= ' '; endwhile; } else { $string = ' '.$atts['ifempty'].' '; } wp_reset_postdata(); повернути $рядок; } add_shortcode('list_subpages', 'dknm_list_child_pages');
Тепер шорткод можна застосувати на всьому сайті, щоб показувати дочірні сторінки з посиланням і уривком. Використання:
[list_subpages aclass="button" ifempty="На жаль, зараз у нас немає вакансій."] Список вакансій [/list_subpages]
Результатом є гарний, чистий невпорядкований список опублікованих вакансій, які є дочірніми сторінками під сторінкою кар’єри.
Якщо не було опубліковано вакансій (немає дочірніх сторінок), буде опубліковано:
На жаль, наразі у нас немає вакансій.
Якщо були опубліковані вакансії (дочірні сторінки), буде опубліковано:
Список вакансій:
- Остання дочірня сторінка – Уривок зі сторінки дитини
- Наступна дочірня сторінка – Уривок зі сторінки дитини
- Наступна дочірня сторінка – Уривок зі сторінки дитини