Intereting Posts
Как разрешить привязку косых черт на некоторых URL-адресах без перенаправления, но не на других? Подкатегории с тем же именем Автоматическое добавление ссылки на ссылку следующей страницы перед тегом '<! – nextpage ->' в сообщениях? Пользовательский запрос с query_posts не показывает сообщение без определенного meta_key Может ли WordPress перенаправлять на «аналогичную страницу» в случае ошибки 404 Как пропустить обработку 404 wordpress? Использование breadcrumb для возврата из одной страницы в список исключить категорию из функции WordPress Form Отсутствует wp-load.php при новой установке Возможность просматривать (не редактировать) информацию личного профиля другого пользователя Удален пользовательский пул сообщений, но не работает для дочерних страниц Не удается обновить файл для моей темы Загрузка медиафайлов изображений Есть ли стандартная разметка HTML для метаболизма? Проблема перемещения моего сайта LivePress на локальный хост

Добавление пользовательской строки текста в php-код

Код ниже используется для загрузки моих твитов и размещения их в виде отдельных сообщений в блоге на моем сайте WordPress.

Я хочу добавить «Follow me on Twitter link» после твита, когда он отображается в основной части сообщения. Как мне это сделать?

Так, например, он хочет, чтобы он выглядел так:

Название – Усеченный Tweet

Тело – Tweet в полном объеме

Опубликовать твит-текст – Следуйте за мной в Твиттере (со ссылкой)

Вот код. Любая помощь будет фантастической.

<?php function Keyring_Twitter_Importer() { class Keyring_Twitter_Importer extends Keyring_Importer_Base { const SLUG = 'twitter'; // eg 'twitter' (should match a service in Keyring) const LABEL = 'Twitter'; // eg 'Twitter' const KEYRING_SERVICE = 'Keyring_Service_Twitter'; // Full class name of the Keyring_Service this importer requires const REQUESTS_PER_LOAD = 3; // How many remote requests should be made before reloading the page? var $auto_import = false; function __construct() { parent::__construct(); add_action( 'keyring_importer_twitter_custom_options', array( $this, 'custom_options' ) ); } function custom_options() { ?><tr valign="top"> <th scope="row"> <label for="include_rts"><?php _e( 'Import retweets', 'keyring' ); ?></label> </th> <td> <input type="checkbox" value="1" name="include_rts" id="include_rts"<?php echo checked( $this->get_option( 'include_rts', true ) ); ?> /> </td> </tr> <tr valign="top"> <th scope="row"> <label for="include_replies"><?php _e( 'Import @replies', 'keyring' ); ?></label> </th> <td> <input type="checkbox" value="1" name="include_replies" id="include_replies"<?php echo checked( $this->get_option( 'include_replies', true ) ); ?> /> </td> </tr><?php } function handle_request_options() { // Validate options and store them so they can be used in auto-imports if ( empty( $_POST['category'] ) || !ctype_digit( $_POST['category'] ) ) $this->error( __( "Make sure you select a valid category to import your checkins into." ) ); if ( empty( $_POST['author'] ) || !ctype_digit( $_POST['author'] ) ) $this->error( __( "You must select an author to assign to all checkins." ) ); if ( isset( $_POST['auto_import'] ) ) $_POST['auto_import'] = true; else $_POST['auto_import'] = false; if ( isset( $_POST['include_rts'] ) ) $_POST['include_rts'] = true; else $_POST['include_rts'] = false; if ( isset( $_POST['include_replies'] ) ) $_POST['include_replies'] = true; else $_POST['include_replies'] = false; // If there were errors, output them, otherwise store options and start importing if ( count( $this->errors ) ) { $this->step = 'greet'; } else { $this->set_option( array( 'category' => (int) $_POST['category'], 'tags' => explode( ',', $_POST['tags'] ), 'author' => (int) $_POST['author'], 'include_replies' => (bool) $_POST['include_replies'], 'include_rts' => (bool) $_POST['include_rts'], 'auto_import' => (bool) $_POST['auto_import'], 'user_id' => $this->service->get_token()->get_meta( 'user_id' ), ) ); $this->step = 'import'; } } function build_request_url() { // Base request URL $url = "http://api.twitter.com/1/statuses/user_timeline.json?"; $params = array( 'user_id' => $this->get_option( 'user_id' ), 'trim_user' => 'true', 'count' => 75, // More than this and Twitter seems to get flaky 'include_entities' => 'true', ); if ( false == $this->get_option( 'include_replies' ) ) $params['exclude_replies'] = 'true'; if ( true == $this->get_option( 'include_rts' ) ) $params['include_rts'] = 'true'; $url = $url . http_build_query( $params ); if ( $this->auto_import ) { // Locate our most recently imported Tweet, and get ones since then $latest = get_posts( array( 'numberposts' => 1, 'orderby' => 'date', 'order' => 'DESC', 'meta_key' => 'keyring_service', // In case there are other asides 'meta_value' => 'twitter', 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-standard' ), // Tweets stored as asides 'operator' => 'IN', ) ), ) ); // If we have already imported some, then start since the most recent if ( $latest ) { $max = get_post_meta( $latest[0]->ID, 'twitter_id', true ); $url = add_query_arg( 'since_id', $max, $url ); } } else { // Handle page offsets (only for non-auto-import requests) $url = add_query_arg( 'page', $this->get_option( 'page', 0 ), $url ); } return $url; } function extract_posts_from_data( $raw ) { global $wpdb; $importdata = $raw; if ( null === $importdata ) { $this->finished = true; return new Keyring_Error( 'keyring-twitter-importer-failed-download', __( 'Failed to download your tweets from Twitter. Please wait a few minutes and try again.', 'keyring' ) ); } // Check for API overage/errors if ( !empty( $importdata->error ) ) { $this->finished = true; return new Keyring_Error( 'keyring-twitter-importer-throttled', __( 'You have made too many requests to Twitter and have been temporarily blocked. Please try again in 1 hour (duplicate tweets will be skipped).', 'keyring' ) ); } // Make sure we have some tweets to parse if ( !is_array( $importdata ) || !count( $importdata ) ) { $this->finished = true; return; } // Get the total number of tweets we're importing if ( !empty( $importdata[0]->user->statuses_count ) ) $this->set_option( 'total', $importdata[0]->user->statuses_count ); // Parse/convert everything to WP post structs foreach ( $importdata as $post ) { // Double-check for @replies, which shouldn't be included at all if we chose to skip them if ( true == $this->get_option( 'exclude_replies' ) && null != $post->in_reply_to_screen_name ) continue; // Post title can be empty for Asides, but it makes them easier to manage if they have *something* $title_words = explode( ' ', strip_tags( $post->text ) ); $post_title = implode( ' ', array_slice( $title_words, 0, 15 ) ); // Use the first 15 words if ( count( $title_words ) > 15 ) $post_title .= '&hellip;'; // Parse/adjust dates $post_date_gmt = strtotime( $post->created_at ); $post_date_gmt = gmdate( 'Ymd H:i:s', $post_date_gmt ); $post_date = get_date_from_gmt( $post_date_gmt ); // Apply selected category $post_category = array( $this->get_option( 'category' ) ); // Clean up content a bit $post_content = $post->text; $post_content = $wpdb->escape( html_entity_decode( trim( $post_content ) ) ); // Handle entities supplied by Twitter if ( count( $post->entities->urls ) ) { foreach ( $post->entities->urls as $url ) { $post_content = str_replace( $url->url, $url->expanded_url, $post_content ); } } // Any hashtags used in a tweet will be applied to the Post as tags in WP $tags = $this->get_option( 'tags' ); if ( preg_match_all( '/(^|[(\[\s])#(\w+)/', $post_content, $tag ) ) $tags = array_merge( $tags, $tag[2] ); // Add HTML links to URLs, usernames and hashtags $post_content = make_clickable( esc_html( $post_content ) ); // Include geo Data (if provided by Twitter) if ( !empty( $post->geo ) && 'point' == strtolower( $post->geo->type ) ) $geo = array( 'lat' => $post->geo->coordinates[0], 'long' => $post->geo->coordinates[1] ); else $geo = array(); // Get a GUID from Twitter, plus other important IDs to store in postmeta later $user = $this->service->get_token()->get_meta( 'username' ); $twitter_id = $post->id_str; $twitter_permalink = "https://twitter.com/{$user}/status/{$twitter_id}"; $in_reply_to_user_id = $post->in_reply_to_user_id; $in_reply_to_screen_name = $post->in_reply_to_screen_name; $in_reply_to_status_id = $post->in_reply_to_status_id; $post_author = $this->get_option( 'author' ); $post_status = 'publish'; $twitter_raw = $post; // Build the post array, and hang onto it along with the others $this->posts[] = compact( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_status', 'post_category', 'tags', 'twitter_id', 'twitter_permalink', 'geo', 'in_reply_to_user_id', 'in_reply_to_screen_name', 'in_reply_to_status_id', 'twitter_raw' ); } } function insert_posts() { global $wpdb; $imported = 0; $skipped = 0; foreach ( $this->posts as $post ) { extract( $post ); if ( $wpdb->get_var( $wpdb->prepare( "SELECT meta_id FROM {$wpdb->postmeta} WHERE meta_key = 'twitter_id' AND meta_value = %s", $twitter_id ) ) || $post_id = post_exists( $post_title, $post_content, $post_date ) ) { // Looks like a duplicate $skipped++; } else { $post_id = wp_insert_post( $post ); if ( is_wp_error( $post_id ) ) return $post_id; if ( !$post_id ) continue; // Track which Keyring service was used add_post_meta( $post_id, 'keyring_service', $this->service->get_name() ); // Store the twitter id, reply ids etc add_post_meta( $post_id, 'twitter_id', $twitter_id ); add_post_meta( $post_id, 'twitter_permalink', $twitter_permalink ); if ( !empty( $in_reply_to_user_id ) ) add_post_meta( $post_id, 'twitter_in_reply_to_user_id', $in_reply_to_user_id ); if ( !empty( $in_reply_to_screen_name ) ) add_post_meta( $post_id, 'twitter_in_reply_to_screen_name', $in_reply_to_screen_name ); if ( !empty( $in_reply_to_status_id ) ) add_post_meta( $post_id, 'twitter_in_reply_to_status_id', $in_reply_to_status_id ); // Update Category and Tags wp_set_post_categories( $post_id, $post_category ); if ( count( $tags ) ) wp_set_post_terms( $post_id, implode( ',', $tags ) ); // Store geodata if it's available if ( !empty( $geo ) ) { add_post_meta( $post_id, 'geo_latitude', $geo['lat'] ); add_post_meta( $post_id, 'geo_longitude', $geo['long'] ); add_post_meta( $post_id, 'geo_public', 1 ); } add_post_meta( $post_id, 'raw_import_data', json_encode( $twitter_raw ) ); $imported++; } } $this->posts = array(); // Return, so that the handler can output info (or update DB, or whatever) return array( 'imported' => $imported, 'skipped' => $skipped ); } } } // end function Keyring_Twitter_Importer add_action( 'init', function() { Keyring_Twitter_Importer(); // Load the class code from above keyring_register_importer( 'twitter', 'Keyring_Twitter_Importer', plugin_basename( __FILE__ ), __( 'Import all of your tweets from Twitter as Posts (marked as "asides") in WordPress.', 'keyring' ) ); } ); 

Solutions Collecting From Web of "Добавление пользовательской строки текста в php-код"

В функции insert_posts перед строкой $post_id = wp_insert_post( $post ); добавьте следующее (и приложите к вашим потребностям):

Ссылка на страницу пользователя Twitter

 $post['post_content'] .= '<a href="http://twitter.com/__USERNAME__">' .'Follow me on Twitter' .'</a>'; 

и / или

Ссылка на статус Twitter

 $post['post_content'] .= '<a href="'.$post['twitter_permalink'].'">' .'View this post on Twitter' .'</a>';