Intereting Posts
Результат заказа WP_Query по дате И meta_value Как получить доступ к переменным плагина из шаблонов тем, не используя глобальные переменные? Категория "тот же пост" «Post-name» Renders Использование page.php, но «post-name-2» отображает с помощью single.php Контактная форма 7 Многоязычная подача с использованием полиланга Могу ли я настроить адрес электронной почты на контактную форму 7? Сделать метаболизм всегда на вершине (липкий) WP REST API Создайте собственный маршрут для запроса POST Функция «imagejpeg» не работает в wordpress stop redirection on / wp-admin вызов / wp-login Получение родителя из wp_term_taxonomy передавать идентификатор пользователя в slug и получать информацию о пользователе Вручную кэшируйте специальную страницу без WP-но-используя-WP (например, результаты Ajax) с W3TC Плагин: Менеджер событий – следующее и предыдущее событие Вставить разметку перед элементами меню

Попытка получить свойство не-объекта при использовании get_post_permalink ()

Я пытаюсь получить постоянную ссылку на настраиваемый тип сообщения, используя get_post_permalink (). Мне нужно использовать get_post_permalink (), потому что я использую фильтр post_type_link, чтобы изменить постоянную ссылку для определенных типов сообщений на нечто иное, чем обычно. Вот код, который я пытаюсь запустить:

class Get_Department_Class { /** * The department's post ID. * * @since 1.0 * @access public * @var int $ID Holds the department's post ID */ public $ID; /** * Will hold the department's post data. * * @since 1.0 * @access public * @var array $post Holds the department's post data */ public $post; /** * Will hold the department's permalink. * * @since 1.0 * @access protected * @var string $permalink Holds the department's permalink */ protected $permalink; /** * Build/construct the department. * * @since 1.0 * @param $post_id - allows you to pass the department's post ID or post title */ public function __construct( $post_id ) { global $wpdb, $blog_id; // If not main site, change $wpdb blog ID for queries // Will change back when we're done $old_blog_id = ( 1 != $blog_id ) ? $wpdb->set_blog_id( 1 ) : NULL; // Check against an ID if ( is_numeric( $post_id ) ) { $this->post = get_post( $post_id ); } // Check against a post title if ( ! $this->post ) { $this->post = get_page_by_title( $post_id, OBJECT, 'departments' ); } // Reset the blog ID if ( isset( $old_blog_id ) ) $wpdb->set_blog_id( $old_blog_id ); // No point if there's no post ID if ( ! ( $this->ID = isset( $this->post ) && isset( $this->post->ID ) ? $this->post->ID : NULL ) ) { $this->post = NULL; return; } } /** * Get the department's permalink. * * @since 1.0 */ public function get_permalink() { // Make sure we have the post ID if ( ! $this->ID ) return false; // See if the permalink is already set if ( isset( $this->permalink ) && ! empty( $this->permalink ) ) return $this->permalink; // Get the permalink if ( $permalink = get_post_permalink( $this->ID ) ) { // Store the permalink $this->permalink = $permalink; return $this->permalink; } return false; } } 

Возвращаемая ошибка: «Обратите внимание: попытка получить свойство не-объекта в /Applications/MAMP/htdocs/wp-includes/link-template.php в строке 266.» После выполнения некоторых тестов в ядре wordpress строка 264 в файле link-template.php возвращает NULL.

строка 264:

  $post_type = get_post_type_object($post->post_type); 

Затем в строке 266 основной код пытается получить доступ к свойству объекта $ post_type, который является NULL и, следовательно, выдает ошибку.

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

FYI: Я запускаю WP 4.5.9 …

Solutions Collecting From Web of "Попытка получить свойство не-объекта при использовании get_post_permalink ()"

Причина, по которой это проблема, заключается в том, что я использую switch_to_blog () для нескольких пользователей. Post_type не существует в текущем блоге. Он существует только в основном блоге. Поскольку post_type не существует, функция get_post_type_object () возвращает значение null.

Что я сделал, чтобы исправить это, создайте функцию custom_get_post_permalink, которая также принимает аргумент blog_id и, следовательно, изменяет соответствующий blog_id на многоузловом, чтобы правильно создать post_type_object.