Halaman Pengaturan Jenis Tulisan Kustom, pilih halaman untuk menampilkan arsip

12

Jadi, saya mengikuti jawaban yang diterima dari pos ini. Kemungkinan untuk menambahkan pengaturan lain ke pengaturan 'Tampilan halaman depan' untuk Jenis Posting Kustom

tetapi tidak sepenuhnya berfungsi, harus dibandingkan dengan jawaban yang diterima di pos ini.

Tidak dapat menampilkan do_settings_sections. Tidak bisa mengerti kenapa

Sekarang, ini benar-benar berfungsi menggunakan kode berikut

//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']
        )
    ); 
}

Untuk membuatnya berfungsi, saya melihat perbedaan antara dua contoh, dan mengubah do_settings_sections ke edit_posts ... sekarang dalam pikiran saya tujuannya adalah untuk izin atau kemampuan, saya telah mencoba bit lain tetapi hanya muncul dengan Anda tidak memiliki izin dll di wordpress.

Adakah yang bisa membantu memahami kode saya? Saya telah berputar-putar dan akan sangat menghargai satu set mata lain yang melihatnya.

Setelah ini saya kemudian perlu membuatnya sehingga halaman benar-benar berfungsi seperti pengaturan halaman di halaman Reading, untuk memuat arsip jenis posting kustom saya.

Terima kasih banyak kawan!

EDIT:

Harus menabrak, sangat membutuhkan bantuan dalam hal ini! Senang membayar bir untuk memperbaikinya!

Luke Wale
sumber
Adakah yang bisa membantu?
Luke Wale
itu harus bekerja. saya menguji kode Anda. atau Anda butuh bantuan dengan hal lain di sini?
iantsch
Membaca pertanyaan Anda, saya tidak yakin apa yang perlu Anda bantu, tetapi inilah jawaban yang memungkinkan Anda menetapkan Template Halaman sebagai halaman Arsip
Howdy_McGee
Apakah tujuan Anda hanya untuk memiliki templat khusus untuk jenis posting khusus?
Slam

Jawaban:

1

Ada cara kotor (sebenarnya kotor sekali) untuk melampirkan halaman WordPress biasa sebagai halaman arsip dari halaman pengaturan jenis posting kustom.

Anda harus membatalkan registrasi jenis posting terlebih dahulu, dan buat lagi. Jika Anda tidak menggunakan argumen khusus atau cukup berani coba kode ini.

Tambahkan ujung fragmen kode ini dari halaman pengaturan Anda.

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' );
}
Serkan Algur
sumber
1
Ini membuat saya merasa kotor hanya dengan membacanya, tetapi saya terkesan.
MikeNGarrett