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

Кто-либо знает о способе добавить код к functions.php файлу, который автоматически вынудит все сообщения, принадлежащие пользовательскому типу сообщения быть "частными" и/или "защищенными паролем" с набором пароля по умолчанию?

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

3
17.12.2010, 05:19
3 ответа

Можно сцепиться на save_post, wp_insert_post или wp_insert_post_data для изменения сообщения возражают до него вставляемый или сохраненный.

Используя save_post или wp_insert_post обратный вызов должен был бы объявить два args и получит объект сообщения как вторую входящую переменную.. (и я показываю Вам для покрытия альтернатив, пример TheDeadMedic был бы прекрасен к).

Для установки значений по умолчанию для конкретного сообщения вводят для новых сообщений, на которые можно использовать маленький взлом путем сцепления default_content (хотя default_title также работал бы к), как пример, который я дал здесь.

Вам по существу нужны две функции, один для изменения объектов сообщения во время сохраняют/вставляют и один для устанавливания значений объекта сообщения по умолчанию, вот пример двух необходимых функций (снова замечание, что можно подкачать мой save_post обратный вызов для примера, уже данного TheDeadMedic).

add_action( 'save_post', 'check_type_values', 10, 2 );

function check_type_values( $post_id, $post ) {

    if( $post->post_type )
        switch( $post->post_type ) {
            case 'my_custom_type':
                $post->post_status = 'private';
                $post->post_password = ( '' == $post->post_password ) ? 'some_default_when_no_password' : $post->post_password;
            break;
        }   
    return;
}

add_filter( 'default_content', 'set_default_values', 10, 2 );

function set_default_values( $post_content, $post ) {

    if( $post->post_type )
        switch( $post->post_type ) {
            case 'my_custom_type':
                $post->post_status = 'private';
                $post->post_password = 'some_default_password';
            break;
        }
    return $post_content;
}

Надежда, которая помогает...

6
19.02.2020, 22:14
  • 1
    Хороший для того, чтобы приложить дополнительные усилия :) Хотя я советовал бы использовать wp_insert_post_data wp_insert_post (последний просто уволен, после того как сообщение сохраняется, и необходимо было бы вызвать сохранение снова, если бы Вы хотели изменить данные, пока первый позволяет Вам изменять данные сообщения, прежде чем это будет сохранено к базе данных). –  TheDeadMedic 07.12.2010, 01:48
  • 2
    , мой ответ был главным образом предназначен к комплименту собственное... просто хотело удостовериться, что "аспект" значений по умолчанию установки был покрыт (никто не заметил мой ответ в другой теме), и полагал, что я мог бы также показать, как использовать один из других рычагов, пока я в нем.. :) –  t31os 07.12.2010, 02:18
  • 3
    @TheDealMedic и @t31os - быстрый вопрос на этом. На основе комментария Медиков, где "wp_insert_post" или "wp_insert_post_data" использовались бы в рамках кода? Вы возражали бы изменять ответ с правильным кодом так, чтобы его легко применимое другими? –  NetConstructor.com 20.12.2010, 09:33
  • 4
    @TheDealMedic и @t31os - кроме того, в тестировании этого кода далее, я заметил, что, если существующее сообщение (который не является частным) редактируется через бэкенд и затем впоследствии сохранило состояние сообщения, не изменяется на "частный". Хотя я вижу ситуации, где только новые сообщения получают значение по умолчанию "частных" за мою текущую ситуацию, я хотел бы осуществить это все, сообщения для этого типа сообщения являются "частными" и где эта опция не может быть изменена никакими пользователями кроме администратора. Как это может быть выполнено? –  NetConstructor.com 20.12.2010, 09:39
  • 5
    Хорошо, хорошо просто последуйте совету TDM и используйте wp_insert_post_data рычаг. Отметьте, любой подход не собирается уже автоматически исправлять любые сообщения, созданные, которым не установили их состояние на частный, Вам будет нужно что-то отдельное, чтобы работать на основе существующих сообщений и скорректировать состояние сообщения.. –  t31os 20.12.2010, 14:37
function force_type_private($post)
{
    if ($post['post_type'] != 'my_post_type' || $post['post_status'] == 'trash')
        return $post;

    $post['post_password'] = 'my password';
    $post['post_status'] = 'private';
    return $post;
}
add_filter('wp_insert_post_data', 'force_type_private');
4
19.02.2020, 22:14
  • 1
    , который я не добавил бы $post['post_password'] раздел. Существует значительное другое между частными сообщениями и защищенными паролем сообщениями. –  EAMann 07.12.2010, 21:06
  • 2
    @EAMann, которым Это было главным образом в демонстративных целях, но я предполагаю, что должен был упомянуть, что :) –  TheDeadMedic 08.12.2010, 12:58
  • 3
    @EAmann - EAMann, я полагаю, что Вы истинный эксперт в этом сообществе, и мне любопытно услышать Вашу обратную связь на каждом из предлагаемых решений (если у кого-либо еще есть обратная связь, также прокомментируйте)... То, что делает Вы чувствуете, является лучшим подходом. Я спрашиваю, потому что этот ответ кажется простым и чистым и имеет 3 голоса, где, поскольку предыдущий ответ, который я принял, имеет только два голоса и кажется более сложным, но возможно всесторонним для различных ситуаций. Давайте предположим, что мы просто фокусируемся на установке всех сообщений к "частному" и устраняем защищенную паролем опцию. –  NetConstructor.com 20.12.2010, 09:22
  • 4
    @TheDealMedic или @EAMann - кроме того, в тестировании Вашего кода далее, действительно кажется, что Ваше решение, кажется, лучшая альтернатива предыдущей, которую я принял, таким образом, я принял этот ответ как корректный. Вы могли расширить свой код, чтобы показать, как опция изменить "видимость" может быть удалена и также надо надеяться, показать, как видимость может редактироваться/изменяться, если пользователь вошел в систему, администратор или имеет ту возможность? –  NetConstructor.com 20.12.2010, 09:49

Мы не могли только заставить шаблонную страницу для пользовательского сообщения ввести и сделать проверку, если пользователя зарегистрирован, и проверьте, является ли пользователь определенной ролью? Позволяет берут, например, Вы хотите иметь посттип, который является только, чтобы быть просмотренным администраторами:

<?php if ( is_user_logged_in() && is_admin() ) : if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <?php the_content(); ?>
<?php endwhile; endif; endif; ?>
0
19.02.2020, 22:14
  • 1
    davis, Вы неправильно читаете Вопрос, это о бэкенде (/wp-admin/)... –  brasofilo 21.01.2013, 05:16

Теги

Похожие вопросы