หน้าการตั้งค่าโพสต์ประเภทกำหนดเองเลือกหน้าเพื่อแสดงการเก็บถาวร


12

ดังนั้นฉันจึงปฏิบัติตามคำตอบที่ได้รับการยอมรับของโพสต์นี้เป็นไปได้ที่จะเพิ่มการตั้งค่าอื่นในการตั้งค่า 'แสดงหน้าแรก' สำหรับประเภทโพสต์ที่กำหนดเอง

แต่ไม่ได้ผลทั้งหมดต้องเปรียบเทียบกับคำตอบที่ยอมรับในโพสต์นี้

ไม่สามารถส่งออก do_settings_sections ไม่เข้าใจว่าทำไม

ตอนนี้มันใช้งานได้จริงโดยใช้รหัสต่อไปนี้

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

เพื่อให้มันทำงานฉันสังเกตเห็นความแตกต่างระหว่างสองตัวอย่างและเปลี่ยน do_settings_sections เป็น edit_posts ... ตอนนี้ในใจของฉันจุดประสงค์คือเพื่อการอนุญาตหรือความสามารถฉันได้ลองบิตอื่น ๆ แต่เพิ่งมาพร้อมกับคุณไม่มีสิทธิ์ ฯลฯ ใน WordPress

ใครช่วยให้เข้าใจรหัสของฉันได้ไหม ฉันไปเป็นวงกลมแล้วจะได้ชื่นชมดวงตาอีกคู่ที่กำลังจะข้ามไป

หลังจากนี้ฉันต้องทำเพื่อให้หน้าใช้งานได้จริงเช่นเดียวกับการตั้งค่าหน้าในหน้าการอ่านเพื่อโหลดคลังเก็บประเภทโพสต์ที่กำหนดเองของฉัน

ขอบคุณมาก ๆ !

แก้ไข:

ต้องชนอย่างยิ่งที่ต้องการความช่วยเหลือในเรื่องนี้! ยินดีที่จะ paypal เบียร์ไปแก้ไข!


ใครช่วยได้บ้าง
ลุคเวล

มันควรจะทำงาน ฉันทดสอบโค้ดของคุณแล้ว หรือคุณต้องการความช่วยเหลือในสิ่งอื่นที่นี่
iantsch

อ่านคำถามของคุณฉันไม่แน่ใจว่าสิ่งที่คุณต้องการความช่วยเหลือ แต่นี่คือคำตอบที่ช่วยให้คุณสามารถกำหนดเทมเพลตของเพจเป็นหน้าเก็บถาวร
Howdy_McGee

คุณตั้งเป้าหมายว่าจะมีเทมเพลตที่กำหนดเองสำหรับประเภทโพสต์ที่กำหนดเองหรือไม่
Slam

คำตอบ:


1

มีวิธีสกปรก (อันที่จริงสกปรกเหมือนนรก) ในการแนบหน้า WordPress ธรรมดาเป็นหน้าเก็บถาวรจากหน้าการตั้งค่าประเภทโพสต์ที่กำหนดเอง

คุณต้องยกเลิกการลงทะเบียนประเภทโพสต์ก่อนและสร้างอีกครั้ง หากคุณไม่ได้ใช้อาร์กิวเมนต์ที่กำหนดเองหรือหากคุณกล้าลองรหัสนี้

เพิ่มส่วนของโค้ดนี้ในหน้าการตั้งค่าของคุณ

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
สิ่งนี้ทำให้ฉันรู้สึกสกปรกเพียงแค่อ่าน แต่ฉันก็ประทับใจ
MikeNGarrett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.