Перезапись сообщения slug перед публикацией сообщения

Мне нужно получить поле ACF в сообщении и изменить его (постоянную ссылку) сообщения перед сохранением его в базе данных. Каков подход к этому? Мне нужно, чтобы slug был изменен при каждом создании /редактировании сообщений.

6 голосов | спросил Vit Kos 10 J000000Wednesday13 2013, 10:50:41

2 ответа


13

Следующее следует рассматривать скорее как доказательство концепции, а не как решение для копирования /вставки.
При этом, как вы это делаете,

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

Следовательно, ваш случай должен выглядеть примерно так:

// initial hook
add_action( 'save_post', 'wpse105926_save_post_callback' );

function wpse105926_save_post_callback( $post_id ) {

    // verify post is not a revision
    if ( ! wp_is_post_revision( $post_id ) ) {

        // unhook this function to prevent infinite looping
        remove_action( 'save_post', 'wpse105926_save_post_callback' );

        // update the post slug
        wp_update_post( array(
            'ID' => $post_id,
            'post_name' => 'some-new-slug' // do your thing here
        ));

        // re-hook this function
        add_action( 'save_post', 'wpse105926_save_post_callback' );

    }
}

Что может быть немного запутанным в вышеизложенном, это не-повторное переключение функции изнутри. Это необходимо, так как мы вызываем wp_update_post , чтобы обновить slug, который, в свою очередь, вызовет действие save_post для запуска снова.

Как в стороне, если вы хотите, чтобы WP автоматически генерировал новый slug на основе заголовка сообщения, просто передайте пустую строку:

wp_update_post( array(
    'ID' => $post_id,
    'post_name' => '' // slug will be generated by WP based on post title
));
ответил Johannes Pille 10 J000000Wednesday13 2013, 12:46:23
1

Мне нужно то же самое, за исключением того, что только для создания сообщений.

Я реализовал решение здесь (этот файл является готовым к копированию /вставке

ответил IvanRF 11 FebruaryEurope/MoscowbThu, 11 Feb 2016 02:15:37 +0300000000amThu, 11 Feb 2016 02:15:37 +030016 2016, 02:15:37

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132