/var/www/html_us/wp-content/plugins/woocommerce/src/Blocks/Templates/AbstractPageTemplate.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
namespace Automattic\WooCommerce\Blocks\Templates;

/**
 * AbstractPageTemplate class.
 *
 * Shared logic for page templates.
 *
 * @internal
 */
abstract class AbstractPageTemplate extends AbstractTemplate {
    
/**
     * Initialization method.
     */
    
public function init() {
        
add_filter'page_template_hierarchy', array( $this'page_template_hierarchy' ), );
    }

    
/**
     * Returns the page object assigned to this template/page.
     *
     * @return \WP_Post|null Post object or null.
     */
    
abstract protected function get_placeholder_page();

    
/**
     * Should return true on pages/endpoints/routes where the template should be shown.
     *
     * @return boolean
     */
    
abstract protected function is_active_template();

    
/**
     * When the page should be displaying the template, add it to the hierarchy.
     *
     * This places the template name e.g. `cart`, at the beginning of the template hierarchy array. The hook priority
     * is 1 to ensure it runs first; other consumers e.g. extensions, could therefore inject their own template instead
     * of this one when using the default priority of 10.
     *
     * @param array $templates Templates that match the pages_template_hierarchy.
     */
    
public function page_template_hierarchy$templates ) {
        if ( 
$this->is_active_template() ) {
            
array_unshift$templates, static::SLUG );
        }
        return 
$templates;
    }

    
/**
     * Forces the page title to match the template title when this template is active.
     *
     * Only applies when hooked into `pre_get_document_title`. Most templates used for pages will not require this because
     * the page title should be used instead.
     *
     * @param string $title Page title.
     * @return string
     */
    
public function page_template_title$title ) {
        if ( 
$this->is_active_template() && $this->get_template_title() ) {
            return 
$this->get_template_title();
        }
        return 
$title;
    }
}