делая ваши сообщения защищенными паролем по умолчанию - PullRequest
2 голосов
/ 16 февраля 2012

Я изначально хотел иметь возможность защитить паролем категорию.По крайней мере, я хотел, чтобы он был защищен паролем, но желательно имя пользователя и пароль для входа.Поскольку в течение нескольких дней мне не удавалось найти решение, я теперь прибегаю к использованию встроенной в WordPress защиты паролем сообщений.

Проблема, с которой я сталкиваюсь, заключается в том, что я буду отправлять сообщения по электронной почте и для того, чтобыэти записи должны быть защищены паролем. Мне нужно войти в Wordpress, а затем вручную выбрать защиту паролем и ввести пароль на панели инструментов.

Я бы хотел, чтобы все сообщения, которые отображаются в определенной категории, былизащищен паролем с тем же паролем по умолчанию.Устранение необходимости входить в Wordpress и вручную выбирать защиту паролем.

Я знаю, что есть функция <?php post_password_required( $post ); ?>, которую мне нужно использовать, но я не уверен, как ее реализовать или где.

Ответы [ 2 ]

0 голосов
/ 03 июля 2017
    add_filter( 'wp_insert_post_data', function( $data, $postarr ){
    if ( 'book' == $data['post_type'] && 'auto-draft' == $data['post_status'] ) {
        $data['post_password'] = wp_generate_password();
    }
    return $data;
}, '99', 2 );
0 голосов
/ 25 ноября 2012

На основании этого ответа WordPress StackExchange . Протестировано только с обычной приборной панелью. Публикация по электронной почте должна быть проверена, но я полагаю, что при таком типе публикации вызывается ловушка.

add_action( 'save_post', 'wpse51363_save_post' );

function wpse51363_save_post( $post_id ) {

    //Check it's not an auto save routine
     if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
          return;

    //Check it's not an auto save routine
     if ( wp_is_post_revision( $post_id ) ) 
          return;

    //Perform permission checks! For example:
    if ( !current_user_can( 'edit_post', $post_id ) ) 
          return;

    $term_list = wp_get_post_terms(
        $post_id, 
        'category', 
        array( 'fields' => 'slugs' ) 
    );

    if( in_array ( 'the-category-slug', $term_list ) )
    {
        // Unhook this function so it doesn't loop infinitely
        remove_action( 'save_post', 'wpse51363_save_post' );

        // Call wp_update_post update, which calls save_post again. 
        wp_update_post( array( 
            'ID' => $post_id,
            'post_password' => 'default-password' ) 
        );

        // Re-hook this function
        add_action( 'save_post', 'wpse51363_save_post' );
    }
}
...