Установите php код для функции. php для обновления действия ловушки после обновления - PullRequest
0 голосов
/ 10 марта 2020

В настоящее время я установил ниже код в заголовке. php. Цель обновления пользовательского поля. Он обновляет настраиваемое поле, когда сообщение открыто браузером, и работает нормально.

Теперь мне нравится устанавливать этот код на функцию. php, и запускать его при публикации updated .

<?php if ( is_single() ) : ?>
<?php
$post_id = $post->ID;
if ( metadata_exists( 'post', $post->ID, '1aa'));
$modified = get_post_meta( $post->ID, '1aa', true );
update_post_meta($post->ID, '1aa', $modified);
?>
<?php endif; ?>

Код функции. php, кажется, незнакомые строки для меня. Ниже приведен код, который я сейчас пытаюсь написать. Было бы полезно, если бы кто-то указал, если что-то не так.

<?php
function update_custom_field( $post_id );
if ( is_single() ) :{
    $post_id = $post->ID;
    if ( metadata_exists( 'post', $post->ID, '1aa'));
    $modified = get_post_meta( $post->ID, '1aa', true );
    update_post_meta($post->ID, '1aa', $modified);

endif;}
add_action( 'post_updated', 'update_custom_field' );
?>

Иногда я вижу какое-то загадочное число 10 или 3, как показано ниже Должен ли я поставить это число тоже?

add_action( 'post_updated', 'update_custom_field', 10, 3 );

Я сделал код, следуя хорошему совету.

function add_custom_field( $post_id, $post, $update ) {
if ( is_single() && metadata_exists( 'post', $post_id, '2a' ) ) :{
    $date = get_post_meta( $post_id, '2a', true );
    update_post_meta($post_id, '2a', $date );}
    else:{
    $date = get_the_date('Y-m-d', $post_id);    
    add_post_meta( $post_id, '2a', '$date', true );}
endif;
}

add_action( 'save_post', 'add_custom_field', 10, 3 );

Однако этот код не влияет на настраиваемое поле '2a'. Когда я ver_dump это, он показывает дату, которую я хотел, как 2020-03-11.

1 Ответ

1 голос
/ 10 марта 2020

В вашем синтаксисе PHP есть несколько проблем, но в основном ваша функция ничего не инкапсулирует, и вы путаете конструкторы операторов if (вам нужно только : или {, чтобы открыть if .

Вот то, что вы ищете:

function update_custom_field( $post_id, $post, $update ) {

    if ( is_single() && metadata_exists( 'post', $post_id, '1aa' ) ) :
        $modified = get_post_meta( $post_id, '1aa', true );
        update_post_meta($post_id, '1aa', $modified);
    endif;
}
add_action( 'save_post', 'update_custom_field', 10, 3 );

Обычно мы используем аргумент $ post_id, который передается в функцию. Этот аргумент является post id.

Далее мы объединяем оба оператора if, нет причин иметь два.

Затем мы выполняем всю проверку и изменяем мета-текст вашего сообщения.

add_action находится за пределами функция. Это может быть до или после нее, я склонен ставить действие после. Я изменил хук на save_post, так как это проверит сохранение и обновление.

На ваш вопрос о числах:

  1. Первое число 10 является приоритетным. Именно тогда срабатывает ловушка действия по отношению к другим функциям на той же самой ловушке .

  2. Второе число 3 является аргументами. Хук save_postupdate_post) Хук принимает три аргумента: post_id, post и update: https://developer.wordpress.org/reference/hooks/save_post/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...