Özel Yazı Türü Ayarları sayfasında, arşivi görüntülemek için sayfayı seçin


12

Bu nedenle, bu gönderinin kabul edilen cevabını takip ettim Özel Gönderi Türü için 'Ön sayfa gösterileri' ayarına başka bir ayar eklemek mümkün

ama tamamen işe yaramadı, bu yazıdaki kabul edilen cevapla karşılaştırmak zorunda kaldı.

Do_settings_sections çıktı alınamıyor. Nedenini anlayamıyorum

Şimdi, aslında aşağıdaki kodu kullanarak çalışır

//Add settings to menu
add_action( 'admin_menu', 'events_options_add_page' );
function events_options_add_page() {
//  add_submenu_page('edit.php?post_type=events', 'Events Admin', 'Events Settings', 'edit_posts', basename(__FILE__), 'events_options_do_page');
    add_submenu_page('edit.php?post_type=events', 'Events Admin', 'Events Settings', 'edit_posts', basename(__FILE__), 'events_options_do_page');
}
///wordpress/32689/possible-to-add-another-setting-to-front-page-displays-setting-for-custom-post


//Fix Cap to allow editors to edit theme options
function events_get_options_page_cap() {
    return 'edit_posts';    
}
add_filter('option_page_capability_events-options', 'events_get_options_page_cap' );


function events_options_do_page() {
?>
    <div class="wrap">
        <?php screen_icon(); ?>
        <h2><?php _e( 'Events Options', 'FoundationPress' ); ?></h2>
        <form action="options.php" method="post">
            <?php
            settings_fields( "events_settings_options" );
            do_settings_sections( "edit_posts" );
            ?>
            <?php submit_button( __( "Save changes", "FoundationPress" ), "primary", "submit", true ); ?>
        </form>
    </div>
    <?php
}

//Register Settings
add_action( 'admin_init', 'events_settings_register' );

function events_settings_register() {
    register_setting( "events_settings_options", "events_settings_options", "events_settings_validate" ); //Register main settings
//  add_settings_section( "events_cpt_settings", __( "Events Page Settings", "FoundationPress" ), "events_settings_dummy", "edit_posts"  ); //Make settings text section
//  add_settings_field( "events_settings_cpt_page", __( "Page for events", "FoundationPress" ), "events_settings_page_select", "edit_posts", "events_settings_options" );
    add_settings_section( "events_cpt_settings", __( "Events Page Settings", "FoundationPress" ), "events_settings_dummy", "edit_posts"  ); //Make settings text section
    add_settings_field( "events_settings_cpt_page", __( "Page for events", "FoundationPress" ), "events_settings_page_select", "edit_posts", "events_cpt_settings" );
}

function events_settings_dummy() {}

//Validate Settings
function events_settings_validate ($input) {
    $valid = get_option ( "events_settings_options" );
    $valid['events_page'] = (int) $input['events_page'];
    return $valid;  
}

//Settings Fields
function events_settings_page_select() {
    $options = get_option( 'events_settings_options' );
    wp_dropdown_pages(
        array(
            'name' => 'events_settings_options[events_page]',
            'echo' => 1,
            'show_option_none' => __( '&mdash; Select &mdash;' ),
            'option_none_value' => '0',
            'selected' => $options['events_page']
        )
    ); 
}

Çalıştırmak için iki örnek arasındaki farkları fark ettim ve do_settings_sections'ı edit_posts olarak değiştirdim ... şimdi aklımda amaç izinler veya yetenekler için, diğer bitleri denedim ama sadece gelip izinleriniz yok vb. wordpress.

Kodumu anlamamıza yardımcı olabilecek biri var mı? Daireler etrafında döndüm ve üzerinden geçen başka bir göz setini çok takdir ediyorum.

Bundan sonra, özel yazı tipi arşivlerimi yüklemek için, sayfanın aslında Okuma sayfasındaki ayarları ayarlamak gibi çalışmasını sağlamak zorundayım.

Çok teşekkürler çocuklar!

DÜZENLE:

Çarpmak zorunda, umutsuzca bu konuda biraz yardıma ihtiyacım var! Bir düzeltme için bir bira paypal için mutlu!


Herkes yardım edebilir mi?
Luke Wale

İşe yaramalı. Kodunuzu test ettim. veya burada başka bir konuda yardıma mı ihtiyacınız var?
iantsch

Sorunuzu okurken neye ihtiyaç duyduğunuzdan emin değilim ama burada bir Sayfa Şablonu Arşiv sayfası olarak
Howdy_McGee

Yalnızca özel bir gönderi türü için özel bir şablona sahip olmak mı istiyorsunuz?
Slam

Yanıtlar:


1

Özel bir yazı türü ayarları sayfasından arşiv sayfası olarak sıradan bir WordPress sayfası eklemenin kirli (aslında cehennem kadar kirli) bir yolu vardır.

Önce yazı türünün kaydını silmeniz ve tekrar oluşturmanız gerekir. Özel bağımsız değişkenler kullanmıyorsanız veya yeterince cesursanız bu kodu deneyin.

Bu kod parçasını ayarlar sayfanızın sonuna ekleyin.

if(isset($_GET['settings-updated']) && $_GET['settings-updated'] == true){
    //Dirty as hell
    $esettings = get_option ( "events_settings_options" );
    $getslug = get_post_field('post_name',$esettings['events_page']);

    unregister_post_type('events');
    register_post_type('events',array(
        'public' => true,
        'rewrite' => array('slug'=>'events'),
        'has_archive' => $getslug,
    ));
    //Needed for automated rewrite rules
    flush_rewrite_rules();
    //To test the functionality
    echo get_post_type_archive_link( 'events' );
}

1
Bu beni okurken kirli hissettirdi, ama çok etkilendim.
MikeNGarrett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.