Как вставить тире (-) в базу данных с помощью wpdb и new_to_publish hook?

Я сохраняю заголовки сообщений в отдельной таблице для конкретного использования. Заголовки сохраняются в базе данных при публикации публикации. код:

add_action('future_to_publish', 'send_emails_on_new_event'); function send_emails_on_new_event($post) { global $post; global $wpdb; $table_name = 'tbl_name'; $site_post_url = get_permalink(); $site_post_title = get_the_title(); $author_id = $post->post_author; $author = get_the_author_meta( 'display_name', $author_id ); $wpdb->insert( $table_name, array( 'site_post_url' => $site_post_url, 'site_post_title' => $site_post_title, 'Author' => $author ) ); } 

Вышеприведенный код вставляет данные в соответствующие поля в таблице, называемые «tbl_name», все отлично, кроме site_post_title если site_post_title имеет dash - оно автоматически преобразуется в дефис и сохраняется.

Скажем, мой титул – Dash – test – -ok?

когда я проверяю запись в таблице tbl_name это - Dash – test – -ok? - Dash – test – -ok?

TBL Почему эти две тире сохраняются?

как я могу сохранить тире как просто тире в таблице базы данных?

ОБНОВИТЬ

название номера знак # двойные кавычки "косая черта / двоеточие: сохраняется как number sign # double quotes ” slash / colon :

Solutions Collecting From Web of "Как вставить тире (-) в базу данных с помощью wpdb и new_to_publish hook?"

Когда мы вызываем get_the_title() , заголовок сообщения берется через wptexturize() через фильтр the_title :

 add_filter( 'the_title', 'wptexturize' ); 

Элементы en-dash и em-dash заменяются на

 /* translators: en dash */ $en_dash = _x( '–', 'en dash' ); /* translators: em dash */ $em_dash = _x( '—', 'em dash' ); 

Простым обходным решением для сохранения дефиса en / em при его сохранении в пользовательской таблице может быть:

 $site_post_title = str_replace( [ '–', '—' ], [ '–', '—' ], get_the_title() ); 

или просто используйте raw $post->post_title если это имеет смысл для вашей установки.