Типы спам-сообщений в WordPress - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь добавить действие «спам» к своим действиям типа сообщения, но при нажатии на ссылку я получаю сообщение об ошибке «Ссылка, по которой вы переходили, истекла». Следовал некоторым инструкциям, таким как увеличение max_execution_time, ничего не работает, как ожидалось. Ниже у вас есть код.

function wpc_remove_add_row_actions( $actions, $post ){
   if( $post->post_type === 'cpost' ){ 
      $url = admin_url( 'edit.php?post=' . $post->ID );
      $spam_link = wp_nonce_url(add_query_arg( array( 'action' => 'spam' ), $url ), 'cpost');
      $actions['spam'] = '<a href="'.$spam_link.'">Spam</a>';
    }   
    return $actions;  
}  
add_filter( 'post_row_actions', 'wpc_remove_add_row_actions', 10, 2 );

Спасибо за помощь заранее.

1 Ответ

0 голосов
/ 31 января 2020

Ошибка в том, что вы проверяете Wordpress Nonce, а не PHP настроек. Кроме того, в вашем случае вы должны вызывать страницу post.php вместо страницы edit.php и должны объявить свой пользовательский запрос после действия (спам) для обработки запроса с помощью add_action( "post_action_{$action}", 'my_custom_action', 10, 1 );, см. Документы: https://developer.wordpress.org/reference/hooks/post_action_action/

В функции my_custom_action() вы должны проверить одноразовый номер, который вы объявили в фильтре post_row_actions, с помощью функции Wordpress check_admin_referer().

Итак, давайте завернем все:

Сначала обновите edit.php до post.php:

function wpc_remove_add_row_actions( $actions, $post ){
  if( $post->post_type === 'cpost' ){ 
      $url = admin_url( 'post.php?post=' . $post->ID );
      $spam_link = wp_nonce_url(add_query_arg( array( 'action' => 'spam' ), $url ), 'cpost');
      $actions['spam'] = '<a href="'.$spam_link.'">Spam</a>';
    }   
    return $actions;  
}  
add_filter( 'post_row_actions', 'wpc_remove_add_row_actions', 10, 2 );

В документах Wordpress вторым параметром wp_nonce_url() является «Имя действия Nonce». См. Документы: https://developer.wordpress.org/reference/functions/wp_nonce_url/

wp_nonce_url (add_query_arg (массив ('action' => 'spam'), $ url), 'cpost');

Итак, ваше nonce имя cpost

Теперь вам просто нужно настроить обработчик пользовательских действий:

// define the post_action_<action> callback 
function my_custom_action_spam( $post_id ) { 
    check_admin_referer('cpost'); //Your nonce name validation
    // make action magic happen here... 
}; 
// add the action 
add_action( "post_action_spam", 'my_custom_action_spam', 10, 1 ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...