Intereting Posts
Получите от автора одно сообщение в пользовательском типе сообщения Я хочу удалить последний после wp_nav_menu Предоставить подписчикам возможность анонимно публиковать Бесконечная прокрутка Лучше расширить класс или использовать add filter / action hooks? Отображать настраиваемое поле только при наличии значения? Задайте значение настраиваемого поля при публикации или обновлении публикации Как организовать эти данные в WordPress Настройка регистра при активации плагина Плагин расширенных настраиваемых полей – конфликт с настраиваемым типом почтового типа js Конфликт в панели администратора – я думаю, это из основной установки WP Как проверить список или фид всех сообщений под категорией и тегом? Как добавить класс clearfix в соответствии с номером сообщений? Изменение постоянных ссылок только для категорий Прикрепление изображений к нескольким галереям

Изменение заголовка сообщения с кодом

Я действительно новичок в разработке WordPress. Я просто пытаюсь изменить заголовок отдельного сообщения. Поэтому я использовал функцию get_the_ID() для получения определенной записи.

Я знаю, что название названия может быть изменено пользователем вручную, но я просто хочу, чтобы это можно было сделать с помощью кода.

Поэтому я попытался добавить функцию в functions.php

 function afunction( $post ) { if ( empty ( $post->post_title ) ) return; $new_title = mb_convert_case( $post->post_title, MB_CASE_TITLE, "UTF-8" ); if ( $post->post_title === $new_title ) return; wp_update_post( array ( 'ID' => $post->ID, 'post_title' => $new_title ) ); // $post is passed by reference, so we update this property in real time $post->post_title = $new_title; } 

Так что в моем index.php код выглядит так:

 <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2> <div class="single-post-content"><?php the_content(); ?></div> <br><br> <?php echo afunction( $post ) ?> <?php $hon = array( 'post_title' => 'asad' ); $name = get_the_ID(); if($name == 19) { $post->title = 'sfsdf'; echo $post->title; } ?> <?php endwhile; ?> 

Thanx за вашу ценную помощь.

Ваш вопрос не очень ясен, потому что, да, можно поменять пост-данные программно, и вы на правильном пути, используя wp_update_post, но я не уверен, что код в файле index.php вашей темы пытается достичь.

Мое предположение заключается в том, что вы хотите изменить название должности из своей темы, но вы ничего не передаете afunction (), чтобы обновить ее.

Кроме того, в вашей функции выше, когда вы вызываете mb_convert_case, вы также переопределяете $ new_title в качестве исходного заголовка сообщения, поэтому, когда выполняется $ post-> post_title === $ new_title, он всегда равен true.

Чтобы достичь того, что, как я думаю, вы пытаетесь достичь, я бы сделал что-то вроде этого:

В functions.php:

 function afunction( $post, $new_title ) { // if new_title isn't defined, return if ( empty ( $new_title ) ) { return; } // ensure title case of $new_title $new_title = mb_convert_case( $new_title, MB_CASE_TITLE, "UTF-8" ); // if $new_title is defined, but it matches the current title, return if ( $post->post_title === $new_title ) { return; } // place the current post and $new_title into array $post_update = array( 'ID' => $post->ID, 'post_title' => $new_title ); wp_update_post( $post_update ); } 

Обновлено: в файле темы (index.php, page.php, single.php и т. Д.):

 <?php while (have_posts()) : the_post(); ?> <h2> <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a> </h2> <div class="single-post-content"> <?php the_content(); ?> </div> <?php $current_id = get_the_id(); $post = get_post($current_id); $new_title = 'New Title'; afunction( $post, $new_title ); ?> <?php endwhile; ?> 

Вам нужно будет обновить хотя бы один раз, чтобы увидеть изменение. Если вы вручную измените файл темы, вам нужно будет обновить его дважды. Однажды, чтобы загрузить измененный файл, второй раз для выполнения обновления. Чтобы этого избежать, вам нужно будет выполнить запрос POST (см. API-интерфейс WordPress) или что-то в этом роде.

Это не то, что кто-то обычно делает с WordPress. Но я могу представить себе некоторые ситуации, когда это было бы уместно. Как правило, хорошей практикой было бы только разрешить зарегистрированным пользователям выполнять действия, которые обновляют данные post в вашей базе данных.

Примечание. Будьте особенно осторожны, если, как в вашем примере index.php, вы используете if (have_posts()) : while (have_posts()) : the_post(); что вы также закрываете это с помощью endif; ПОСЛЕ всего вашего кода.

Я также рекомендую вам просмотреть другие примеры файлов тем из темы по умолчанию и позаботиться о том, чтобы проверить логику вашего PHP, чтобы проверить проблемы.

Поэтому я надеюсь, что это полезно.

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

  if ( empty ( $post->post_title ) ) return; 

всегда ложь

я не понимаю, почему вы хотите изменить название с помощью кода, это не полезно!

возможно, вы можете начать с некоторого учебника по созданию тем. Попробуйте google