Intereting Posts
Сохранить критерии поиска для каждого пользователя и показать на пользовательской странице пользователя Отображать таксономии пользовательских сообщений в виде страницы архива Аргумент post_type не работает корректно с WP_Query woocommerce get_price_html не тянет в правильной цене js solution to … Комментарии могут только оставлять комментарии, но могут отвечать на их дерево комментариев неограниченно WordPress wp-admin перенаправляет на главную страницу Добавить стандартные атрибуты страницы Metabox для страницы Parent Медленный сайт WP, тема.php не кэширование? Время загрузки до 25 секунд! Как вручную добавить элемент в подменю в меню, создаваемом wp_nav_menu? Производительность хранения нескольких мета-полей по сравнению с одним кодированным JSON полем Что такое «лучшие практики» для wp-config.php function.php условный тег только для пользовательских типов сообщений Ищете простой подход для обработки пользовательских $ _POST данных без AJAX? Отправить форму в другой файл php добавляет постоянную ссылку в URL-адрес Динамически добавлять CSS в визуальный редактор

добавлять уникальную строку в качестве настраиваемого поля для каждой записи

Мне нужно назначить уникальную строку идентификатора, например. 524bbc5a3771d для каждого сообщения (уникальная строка для каждого сообщения) на моем сайте. Поэтому я попытался собрать код, собрав кусочки и кусочки отсюда и там и, наконец, смог создать строку. Вот код.

 function unique_post_id_generation($post){ global $post; $generated_id = uniqid(); $update_query = new WP_Query('posts_per_page=-1'); while ( $update_query->have_posts() ) : $update_query->the_post(); add_post_meta($post->ID, 'unique_post_identifier', $generated_id, true); endwhile; } add_action( 'init', 'unique_post_id_generation' ); 

Причина, по которой я использовал uniqid() вместо wp_rand() это то, что я нашел uniqid() генерирует буквенно-цифровое значение, которое, я полагаю, более разнообразно.

Я его эхом отозвался на мой single.php, как мне было нужно, используя: <?php echo get_post_meta($post->ID, 'unique_post_identifier', true);?> . Он отображает хорошую случайную строку, например. 524bbc5a3771d но проблема в том, что во всех сообщениях отображается 524bbc5a3771d та же строка. Вот еще две вещи, которые я прошу вас иметь в виду, предлагая исправление:

  1. Надеюсь, что сгенерированная коррекция будет не повторяющейся-уникальной строкой .
  2. Мне нужна уникальная строка, которая будет генерироваться только один раз для каждого сообщения, поэтому в приведенном выше коде используется add_post_meta, поэтому, пожалуйста, предоставьте мне что-то вроде выше, которое нужно запустить только один раз, но снова не стесняйтесь предлагать любой другой способ, который лучше и более масштабируемым ( не ресурс голодный).
  3. Мне нужна строка, которая будет отображаться только в сообщениях , нигде, например. страницы вложений и т. д.
  4. Строковое значение не должно изменяться ни в каких пост-обновлениях.

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

Solutions Collecting From Web of "добавлять уникальную строку в качестве настраиваемого поля для каждой записи"

Существует более простой способ сделать то, что вы хотите:

 function add_unique_post_identifier( $post_id ) { $unique_post_identifier = get_post_meta($post_id, 'unique_post_identifier', true); // do nothing if post type is not 'post' or identifier is already set if ('post' != get_post_type( ( $post_id ) ) || !empty($unique_post_identifier) ) return; $generated_id = uniqid(); update_post_meta($post_id, 'unique_post_identifier', $generated_id); } // run when post is created or updated add_action( 'save_post', 'add_unique_post_identifier' );