Можно ли добавить ту же запись Post в моей пользовательской таблице, когда публикация опубликована так, как она идет в таблицу wp_post? - PullRequest
1 голос
/ 06 октября 2019

Я создаю плагин для своего клиентского сайта. Когда я активирую свой плагин, в базе данных phpMyAdmin создается таблица с использованием register_activation_hook(). Теперь я хочу добавить новую запись в эту пользовательскую таблицу при обновлении wp_post. Другими словами, поскольку я знаю, что при публикации нового поста эти данные поста вставляются в таблицу wp_post, но возможно ли использовать любой action() для вставки тех же данных поста / страницы в мою пользовательскую таблицу?

Я искал много действий, которые вызываются при публикации или обновлении сообщения, но эти действия у меня не сработали. Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 06 октября 2019
function insert_data_into_page_setting(){
    global $wpdb;
    echo "<script> alert('Row Inserted')</script>";
    $lastID = $wpdb->insert_id;
    $newRes = $wpdb->get_results("SELECT * from wp_posts WHERE ID=$lastID", ARRAY_A);
    foreach ($newRes as $values) {
        $wpdb->insert(
            'wp_page_settings',
            array('ID' => $lastID, 'post_title' => $values['post_title']),
            array('%d', '%s'));
    }
}
add_action('publish_post', 'insert_data_into_page_setting');
0 голосов
/ 06 октября 2019

То, что вы ищете, находится в кодексе согласно codex.wordpress.org. Ссылка ниже покажет вам все функции, необходимые для вашего WordPress сообщения. Пройдите через него и получите доступ к нужным вам функциям публикации.

https://codex.wordpress.org/Plugin_API/Action_Reference#Post.2C_Page.2C_Attachment.2C_and_Category_Actions_.28Admin.29

обновления:

Вы можете подключить эту функцию квставить в свою пользовательскую таблицу при публикации сообщения

function post_published_notification( $ID, $post ) {
    $author = $post->post_author; /* Post author ID. */
    $name = get_the_author_meta( 'display_name', $author );
    $email = get_the_author_meta( 'user_email', $author );
    $title = $post->post_title;
    $permalink = get_permalink( $ID );
    $edit = get_edit_post_link( $ID, '' );
    $to[] = sprintf( '%s <%s>', $name, $email );
    $subject = sprintf( 'Published: %s', $title );
    $message = sprintf ('Congratulations, %s! Your article "%s" has been published.' . "\n\n", $name, $title );
    $message .= sprintf( 'View: %s', $permalink );
    $headers[] = '';
    wp_mail( $to, $subject, $message, $headers );enter code here
}
add_action( 'publish_post', 'post_published_notification', 10, 2 );

, теперь предполагая, что ваша новая таблица для вставки - nancy_table

, которую вы можете вставить следующим образом

// initialize database connections globals
global $wpdb;
$name = "nancy";
$post_new = "my post is here";

$wpdb->query( $wpdb->prepare( 
    "
        INSERT INTO nancy_table
        ( post_id, name, post_new )
        VALUES ( %d, %s, %s )
    ", 
        array(
        10, 
        $name, 
        $post_new
    ) 
) );

, так что, наконец, выбудет иметь

    function post_published_notification( $ID, $post ) {
        $author = $post->post_author; /* Post author ID. */
        $name = get_the_author_meta( 'display_name', $author );
        $email = get_the_author_meta( 'user_email', $author );
        $title = $post->post_title;
        $permalink = get_permalink( $ID );
        $edit = get_edit_post_link( $ID, '' );
        $to[] = sprintf( '%s <%s>', $name, $email );
        $subject = sprintf( 'Published: %s', $title );


// your new post

global $wpdb;
$name = "nancy";
$post_new = "my post is here";

$wpdb->query( $wpdb->prepare( 
    "
        INSERT INTO nancy_table
        ( post_id, name, post_new )
        VALUES ( %d, %s, %s )
    ", 
        array(
        10, 
        $name, 
        $post_new
    ) 
) );



        $message = sprintf ('Congratulations, %s! Your article "%s" has been published.' . "\n\n", $name, $title );
        $message .= sprintf( 'View: %s', $permalink );
        $headers[] = '';
        wp_mail( $to, $subject, $message, $headers );enter code here
    }
    add_action( 'publish_post', 'post_published_notification', 10, 2 );

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

db запрашивает wordpress https://codex.wordpress.org/Class_Reference/wpdb

https://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks

Каждый раз, когда сообщение публикуется, новое сообщение отправляется в вашу пользовательскую таблицу. Пожалуйста, попробуйте и другие функции ..

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