Intereting Posts
Боковая панель заголовка не будет двигаться ниже – хотите выровнять с логотипом заголовка Как отобразить метаописание Yoast SEO в шаблоне архива для каждого сообщения вместо the_excerpt ()? Добавить пользовательское поле в wp_login_form () Вставка категории программно Архивы для пользовательских типов сообщений (без страниц) Использует ли аргумент «cat» в query_posts сообщения из подкатегорий, а также данные ID? Использование пользовательской таксономии при регистрации нового настраиваемого типа сообщений Правила перезаписи WordPress для пользовательского типа и таксономии Как передать аргументы add_action () Динамические классы тела на основе текущей страницы Как создать алфавитно-организованный глоссарий ссылок? Не удалось получить доступ к панели администратора после обновления базы данных WordPress Как я могу использовать оператор if? Получение предупреждения при удалении настраиваемых полей Изменение wp-содержимого без изменения имени папки

Проверка формата сообщения во время xmlrpc_publish_post

WordPress, по-видимому, сохраняет информацию о формате сообщения вне объекта $post . Во время publish_post это не проблема (обычно), потому что вы можете проверять форматы через get_post_format( $post->ID ) вне цикла.

Это не работает во время xmlrpc_publish_post или app_publish_post . Люди должны работать над этим, чтобы получить функции плагина / темы, работающие на мобильных / настольных приложениях.

Мой конкретный код ниже, если это ошибка на моем конце.

 function posse_twitter( $post_ID ) { error_log('Executing posse_twitter()'); global $post; // check post format if necessary if ( get_post_format( $post->ID ) != 'status' ) return; error_log('posse_twitter() made it past format check'); $post_id = $post->ID; $shortlink = wp_get_shortlink(); $tweet_content = $post->post_content.' '.$shortlink; // ...run code once if ( !get_post_meta( $post_id, 'tweeted', $single = true ) ) { error_log('posse_twitter() not tweeted before'); // require the relevant libraries require get_template_directory() .'/inc/posse/libraries/tmhOAuth/tmhOAuth.php'; require get_template_directory() .'/inc/posse/libraries/tmhOAuth/tmhUtilities.php'; $tmhOAuth = new tmhOAuth(array( 'consumer_key' => 'XXXXX', 'consumer_secret' => 'XXXXX', 'user_token' => 'XXXXX', 'user_secret' => 'XXXXX', )); $code = $tmhOAuth->request('POST', $tmhOAuth->url('1/statuses/update'), array( 'status' => $tweet_content )); error_log('posse_twitter() made it past tmhOAuth, should be on Twitter now'); update_post_meta( $post_id, 'tweeted', true ); } } add_action( 'xmlrpc_publish_post', 'posse_twitter' ); add_action( 'app_publish_post', 'posse_twitter' ); add_action( 'publish_post', 'posse_twitter' ); 

error_log() s, поскольку я отлаживал это. Он стреляет, когда xmlrpc_publish_post и app_publish_post попадают, но он не проходит мимо проверки формата.

Обновление: это также не работает, даже если я сначала сохраню пост в виде черновика (через XML-RPC).

Это связано с переменным несоответствием. Ваша функция принимает $post_ID , но на самом деле вы ее не используете. Вместо этого вы пытаетесь ссылаться на глобальный объект $post и выполняете проверку почтового формата с помощью $post->ID . С запросом XML-RPC это не сработает.

Перепишите свою функцию, чтобы использовать get_post() для извлечения объекта post из идентификатора прошедшего:

 function posse_twitter( $post_ID ) { error_log('Executing posse_twitter()'); $post = get_post( $post_ID ); // check post format if necessary if ( get_post_format( $post->ID ) != 'status' ) return; error_log('posse_twitter() made it past format check'); ... }