Trang Cài đặt Loại bài tùy chỉnh, chọn trang để hiển thị lưu trữ


12

Vì vậy, tôi đã làm theo câu trả lời được chấp nhận của bài đăng này Có thể thêm cài đặt khác vào cài đặt 'Hiển thị trang trước' cho Loại bài đăng tùy chỉnh

nhưng không hoàn toàn làm việc, đã phải so sánh với câu trả lời được chấp nhận trong bài viết này.

Không thể xuất do_sinstall_sections. Không thể hiểu tại sao

Bây giờ, nó thực sự hoạt động bằng cách sử dụng mã sau đây

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

Để làm cho nó hoạt động tôi nhận thấy sự khác biệt giữa hai ví dụ và đã thay đổi do_sinstall_sections thành edit_posts ... bây giờ trong tâm trí tôi là mục đích cho quyền hoặc khả năng, tôi đã thử các bit khác nhưng chỉ xuất hiện với Bạn không có quyền, v.v. wordpress.

Ai đó có thể giúp làm cho một số ý nghĩa của mã của tôi xin vui lòng? Tôi đã đi lòng vòng và sẽ đánh giá ồ ạt một cặp mắt khác nhìn qua nó.

Sau đó, tôi cần phải làm cho nó để trang thực sự hoạt động giống như cài đặt các trang trong trang Đọc, để tải lưu trữ loại bài đăng tùy chỉnh của tôi.

Rất cám ơn các bạn!

BIÊN TẬP:

Phải va chạm, rất cần sự giúp đỡ về điều này! Hạnh phúc khi paypal một bia hơn cho một sửa chữa!


Bất cứ ai có thể giúp đỡ tất cả?
Luke Wale

nó nên hoạt động tôi đã kiểm tra mã của bạn hoặc bạn cần giúp đỡ với bất cứ điều gì khác ở đây?
iantsch

Đọc câu hỏi của bạn Tôi không chắc bạn cần trợ giúp gì nhưng đây là câu trả lời cho phép bạn chỉ định Mẫu trang dưới dạng trang Lưu trữ
Howdy_McGee

Mục tiêu của bạn chỉ đơn giản là có một mẫu tùy chỉnh cho loại bài đăng tùy chỉnh?
Slam

Câu trả lời:


1

Có một cách bẩn (thực sự bẩn như địa ngục) để đính kèm một trang WordPress thông thường làm trang lưu trữ từ trang cài đặt loại bài đăng tùy chỉnh.

Bạn cần hủy đăng ký loại bài đăng trước và tạo lại. Nếu bạn không sử dụng đối số tùy chỉnh hoặc nếu bạn đủ can đảm hãy thử mã này.

Thêm đoạn mã này vào cuối trang cài đặt của bạn.

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
Điều này làm tôi cảm thấy bẩn khi đọc nó, nhưng tôi rất ấn tượng.
MikeNGarrett
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.