APF_Demo_CustomFieldType_Select2::replyToLoadTab PHP Метод

replyToLoadTab() публичный Метод

Triggered when the tab starts loading.
public replyToLoadTab ( $oAdminPage )
    public function replyToLoadTab($oAdminPage)
    {
        add_action('do_' . $this->sPageSlug . '_' . $this->sTabSlug, array($this, 'replyToDoTab'));
        // validation_{page slug}_{tab slug}
        add_filter('validation_' . $this->sClassName . '_' . $this->sSectionID, array($this, 'validate'), 10, 4);
        // Section
        $oAdminPage->addSettingSections($this->sPageSlug, array('section_id' => $this->sSectionID, 'tab_slug' => $this->sTabSlug, 'title' => __('Select2', 'admin-page-framework-loader'), 'description' => array(__('This field type lets the user select predefined items with auto-complete.', 'admin-page-framework-loader') . ' ' . sprintf(__('For the specifications of the <code>options</code> argument, see <a href="%1$s" target="blank">here</a>.', 'admin-page-framework-loader'), 'https://select2.github.io/options.html'))));
        // Fields
        $oAdminPage->addSettingFields($this->sSectionID, array('field_id' => 'default', 'type' => 'select2', 'title' => __('Select2', 'admin-page-framework-loader'), 'label' => array(0 => __('Red', 'admin-page-framework-loader'), 1 => __('Blue', 'admin-page-framework-loader'), 2 => __('Yellow', 'admin-page-framework-loader'), 3 => __('Orange', 'admin-page-framework-loader')), 'default' => 2, 'description' => array("<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
array(
    'type'          => 'select2',
    'label'         => array(  
        0 => 'Red', 
        1 => 'Blue',
        2 => 'Yellow', 
        3 => 'Orange',
    ),     
)
EOD
) . "</pre>")), array('field_id' => 'multiple', 'type' => 'select2', 'title' => __('Multiple', 'admin-page-framework-loader'), 'is_multiple' => true, 'default' => array(3, 4), 'label' => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'November', 'October', 'December'), 'description' => array("<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
array(
    'type'          => 'select2',
    'is_multiple'   => true, 
    'default'       => array( 3, 4 ), 
    'label'         => array( 'January', 'February', 'March',  
        'April', 'May', 'June', 'July',  
        'August', 'September', 'November',  
        'October', 'December'  
    ),     
)
EOD
) . "</pre>")), array('field_id' => 'group', 'type' => 'select2', 'title' => __('Group', 'admin-page-framework-loader'), 'default' => 'b', 'label' => array('alphabets' => array('a' => 'a', 'b' => 'b', 'c' => 'c'), 'numbers' => array(0 => '0', 1 => '1', 2 => '2')), 'description' => array("<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
array(
    'type'          => 'select2',
    'default'       => 'b', 
    'label'         => array(      
        'alphabets' => array(    
            'a' => 'a',      
            'b' => 'b',  
            'c' => 'c', 
        ), 
        'numbers' => array(  
            0 => '0', 
            1 => '1', 
            2 => '2',  
        ), 
    ), 
)
EOD
) . "</pre>")), array('field_id' => 'placeholder', 'type' => 'select2', 'title' => __('Placeholder', 'admin-page-framework-loader'), 'label' => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'November', 'October', 'December'), 'options' => array('placeholder' => __('Select a mounth', 'admin-page-framework'), 'width' => '50%', 'allowClear' => true), 'description' => array("<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
array(
    'type'          => 'select2',
    'label'         => array( 'January', 'February', 'March',  
        'April', 'May', 'June', 'July',  
        'August', 'September', 'November',  
        'October', 'December'  
    ),     
    'options'       => array(
        'placeholder' => 'Select a mounth',
        'width'       => '50%',
        'allowClear' => true,
    ),
)
EOD
) . "</pre>")), array('field_id' => 'ajax', 'type' => 'select2', 'title' => __('Ajax', 'admin-page-framework-loader'), 'options' => array('minimumInputLength' => 2, 'width' => '100%'), 'callback' => array('search' => __CLASS__ . '::getPosts'), 'description' => array(__('Post titles will be listed.', 'admin-page-framework-loader'), __('To use a data source with AJAX, set a callback function to the <code>search_callback</code> argument.', 'admin-page-framework-loader') . ' ' . __('From the callback function, return an array of lists.', 'admin-page-framework-loader'), "<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
array(
    'type'          => 'select2',
    'options'         => array(
        'minimumInputLength' => 2,
        'width' => '100%',
    ),
    'callback'        => array(
        // If the `search` callback is set, the field will be AJAX based.
        'search'    => __CLASS__ . '::getPosts', 
    ),
)
EOD
) . "</pre>", "<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
function getPosts( \$aQueries, \$aFieldset ) {
            
    \$_aArgs         = array(
        'post_type'         => 'post',
        'paged'             => \$aQueries[ 'page' ],
        's'                 => \$aQueries[ 'q' ],
        'posts_per_page'    => 30,
        'nopaging'          => false,
    );
    \$_oResults      = new WP_Query( \$_aArgs );
    \$_aPostTitles   = array();
    foreach( \$_oResults->posts as \$_iIndex => \$_oPost ) {
        \$_aPostTitles[] = array(    // must be numeric
            'id'    => \$_oPost->ID,
            'text'  => \$_oPost->post_title,
        );
    }
    return array( 
        'results'       => \$_aPostTitles,
        'pagination'    => array(
            'more'  => intval( \$_oResults->max_num_pages ) !== intval( \$_oResults->get( 'paged' ) ),
        ),
    );
    
}    
EOD
) . "</pre>")), array('field_id' => 'ajax_multiple', 'type' => 'select2', 'title' => __('Ajax Multiple', 'admin-page-framework-loader'), 'is_multiple' => true, 'options' => array('minimumInputLength' => 2, 'width' => '100%', 'selectOnClose' => true, 'tags' => true, 'tokenSeparators' => array(',')), 'callback' => array('search' => __CLASS__ . '::getTerms', 'new_tag' => __CLASS__ . '::createTerm'), 'description' => array(__('Enter post tags, separated by commas.', 'admin-page-framework-loader'), "<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
array(
    'type'          => 'select2',
    'is_multiple'       => true,
    'options'           => array(
        'minimumInputLength'    => 2,
        'width'                 => '100%',
        'selectOnClose'         => true,
        'tags'                  => true, // user can create new tags
        'tokenSeparators'       => array( ',', ),
    ),
    
    'callback'        => array(
        'search'    => __CLASS__ . '::getTerms',    // Ajax feature will be enabled 
        'new_tag'   => __CLASS__ . '::createTerm',  // `options`->`tags` will be enabled
    ),    
)
EOD
) . "</pre>", "<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
function getTerms( \$aQueries, \$aFieldset ) {
    
    \$_aArguments = array(
        'taxonomy'   => 'post_tag',
        'hide_empty' => false,
        'name__like' => \$aQueries[ 'q' ],
    );
    \$_aTerms = get_terms( \$_aArguments );
    if ( is_wp_error( \$_aTerms ) ) {
        return array(
            'results'       => array(),
        );
    }       
                        
    \$_aResults   = array();
    foreach( \$_aTerms as \$_iIndex => \$_oTerm ) {
        \$_aResults[] = array(    // must be numeric
            'id'    => \$_oTerm->term_id,
            'text'  => \$_oTerm->name,
        );
    }
                   
    return array( 
        'results'       => \$_aResults,
    );    
    
}
EOD
) . "</pre>", "<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
function createTerm( \$aQueries, \$aFieldset ) {

    \$_sTermName   = \$aQueries[ 'tag' ];
    \$_oTerm       = get_term_by( 'name', \$_sTermName, 'post_tag' );
    \$_bTermExists = is_object( \$_oTerm ) && isset( \$_oTerm->term_id );
    
    if ( \$_bTermExists ) {
        \$_iTermID     = \$_oTerm->term_id;
        return array( 
            'id'    => \$_iTermID,
            'text'  => \$_sTermName,
        );            
    }

    \$_aoResult = wp_insert_term( \$_sTermName, 'post_tag' );
    if ( is_wp_error( \$_aoResult )) {
        return array(
            'error' => \$_aoResult->get_error_message(),
        );
    }
    
    \$_aResults = \$_aoResult; // e.g. array('term_id'=>12,'term_taxonomy_id'=>34))
    \$_oTerm    = get_term( \$_aResults[ 'term_id' ], 'post_tag' );

    return array( 
        'id'    => \$_oTerm->term_id,
        'text'  => \$_oTerm->name,
    );

}
EOD
) . "</pre>")), array('field_id' => 'repeatable_and_sortable', 'type' => 'select2', 'title' => __('Repeatable & Sortable', 'admin-page-framework-loader'), 'label' => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'November', 'October', 'December'), 'repeatable' => true, 'sortable' => true, 'options' => array('width' => '400px'), 'description' => array("<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
array(
    'type'          => 'select2',
    'label'         => array( 'January', 'February', 'March',  
        'April', 'May', 'June', 'July',  
        'August', 'September', 'November',  
        'October', 'December'  
    ),     
    'repeatable'    => true,
    'sortable'      => true,
    'options'       => array(
        'width'       => '400px',
    ),    
)
EOD
) . "</pre>")), array('field_id' => 'ajax_repeatable_sortable', 'type' => 'select2', 'title' => __('Ajax Repeatable and Sortable', 'admin-page-framework-loader'), 'repeatable' => true, 'sortable' => true, 'options' => array('width' => '100%'), 'callback' => array('search' => __CLASS__ . '::getPosts'), 'description' => array("<pre>" . $oAdminPage->oWPRMParser->getSyntaxHighlightedPHPCode(<<<EOD
array(
    'type'          => 'select2',
    'repeatable'      => true,
    'sortable'        => true,
    'options'         => array(
        'width' => '100%',
    ),
    'callback'        => array(
        'search'    => __CLASS__ . '::getPosts', 
    ),    
)
EOD
) . "</pre>")), array());
    }