PageRenderTime 51ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-admin/includes/internal-linking.php

https://bitbucket.org/crypticrod/sr_wp_code
PHP | 124 lines | 91 code | 10 blank | 23 comment | 7 complexity | a04ff5c4a77082f67a171e7804c264d9 MD5 | raw file
Possible License(s): AGPL-1.0, GPL-2.0, LGPL-2.1, GPL-3.0, LGPL-2.0, AGPL-3.0
  1. <?php
  2. /**
  3. * Internal linking functions.
  4. *
  5. * @package WordPress
  6. * @subpackage Administration
  7. * @since 3.1.0
  8. */
  9. /**
  10. * Performs post queries for internal linking.
  11. *
  12. * @since 3.1.0
  13. *
  14. * @param array $args Optional. Accepts 'pagenum' and 's' (search) arguments.
  15. * @return array Results.
  16. */
  17. function wp_link_query( $args = array() ) {
  18. $pts = get_post_types( array( 'public' => true ), 'objects' );
  19. $pt_names = array_keys( $pts );
  20. $query = array(
  21. 'post_type' => $pt_names,
  22. 'suppress_filters' => true,
  23. 'update_post_term_cache' => false,
  24. 'update_post_meta_cache' => false,
  25. 'post_status' => 'publish',
  26. 'order' => 'DESC',
  27. 'orderby' => 'post_date',
  28. 'posts_per_page' => 20,
  29. );
  30. $args['pagenum'] = isset( $args['pagenum'] ) ? absint( $args['pagenum'] ) : 1;
  31. if ( isset( $args['s'] ) )
  32. $query['s'] = $args['s'];
  33. $query['offset'] = $args['pagenum'] > 1 ? $query['posts_per_page'] * ( $args['pagenum'] - 1 ) : 0;
  34. // Do main query.
  35. $get_posts = new WP_Query;
  36. $posts = $get_posts->query( $query );
  37. // Check if any posts were found.
  38. if ( ! $get_posts->post_count )
  39. return false;
  40. // Build results.
  41. $results = array();
  42. foreach ( $posts as $post ) {
  43. if ( 'post' == $post->post_type )
  44. $info = mysql2date( __( 'Y/m/d' ), $post->post_date );
  45. else
  46. $info = $pts[ $post->post_type ]->labels->singular_name;
  47. $results[] = array(
  48. 'ID' => $post->ID,
  49. 'title' => trim( esc_html( strip_tags( get_the_title( $post ) ) ) ),
  50. 'permalink' => get_permalink( $post->ID ),
  51. 'info' => $info,
  52. );
  53. }
  54. return $results;
  55. }
  56. /**
  57. * Dialog for internal linking.
  58. *
  59. * @since 3.1.0
  60. */
  61. function wp_link_dialog() {
  62. ?>
  63. <form id="wp-link" tabindex="-1">
  64. <?php wp_nonce_field( 'internal-linking', '_ajax_linking_nonce', false ); ?>
  65. <div id="link-selector">
  66. <div id="link-options">
  67. <p class="howto"><?php _e( 'Enter the destination URL' ); ?></p>
  68. <div>
  69. <label><span><?php _e( 'URL' ); ?></span><input id="url-field" type="text" tabindex="10" name="href" /></label>
  70. </div>
  71. <div>
  72. <label><span><?php _e( 'Title' ); ?></span><input id="link-title-field" type="text" tabindex="20" name="linktitle" /></label>
  73. </div>
  74. <div class="link-target">
  75. <label><input type="checkbox" id="link-target-checkbox" tabindex="30" /> <?php _e( 'Open link in a new window/tab' ); ?></label>
  76. </div>
  77. </div>
  78. <?php $show_internal = '1' == get_user_setting( 'wplink', '0' ); ?>
  79. <p class="howto toggle-arrow <?php if ( $show_internal ) echo 'toggle-arrow-active'; ?>" id="internal-toggle"><?php _e( 'Or link to existing content' ); ?></p>
  80. <div id="search-panel"<?php if ( ! $show_internal ) echo ' style="display:none"'; ?>>
  81. <div class="link-search-wrapper">
  82. <label>
  83. <span><?php _e( 'Search' ); ?></span>
  84. <input type="text" id="search-field" class="link-search-field" tabindex="60" autocomplete="off" />
  85. <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
  86. </label>
  87. </div>
  88. <div id="search-results" class="query-results">
  89. <ul></ul>
  90. <div class="river-waiting">
  91. <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
  92. </div>
  93. </div>
  94. <div id="most-recent-results" class="query-results">
  95. <div class="query-notice"><em><?php _e( 'No search term specified. Showing recent items.' ); ?></em></div>
  96. <ul></ul>
  97. <div class="river-waiting">
  98. <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. <div class="submitbox">
  104. <div id="wp-link-cancel">
  105. <a class="submitdelete deletion" href="#"><?php _e( 'Cancel' ); ?></a>
  106. </div>
  107. <div id="wp-link-update">
  108. <?php submit_button( __('Update'), 'primary', 'wp-link-submit', false, array('tabindex' => 100)); ?>
  109. </div>
  110. </div>
  111. </form>
  112. <?php
  113. }
  114. ?>