pub_get_shortlink.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
  3. global $wp_query;
  4. $shortlink = '';
  5. $options = $this->plugin_option;
  6. /*
  7. Ensure shortener is loaded..
  8. i.e all options are set correctly
  9. Abort otherwise
  10. */
  11. if (!$this->shortener_loader()) {
  12. return '';
  13. }
  14. /*
  15. Page type switches
  16. */
  17. if ($context == 'query') {
  18. if (is_singular()) {
  19. $id = $wp_query->get_queried_object_id();
  20. $context = 'post';
  21. } elseif (is_front_page()) {
  22. $context = 'blog';
  23. } else {
  24. return '';
  25. }
  26. }
  27. $home_url = get_option('home');
  28. /*
  29. If Homepage
  30. */
  31. if ($context == 'blog') {
  32. if (empty($id))
  33. $url = $home_url;
  34. if ($options->get('urlservice') != 'yourls') {
  35. $shortlink = $this->shortener->generate($url);
  36. }
  37. return $shortlink;
  38. }
  39. /*
  40. If post
  41. */
  42. $post = get_post($id);
  43. if (empty($post)) {
  44. return '';
  45. }
  46. /*
  47. Set up post details
  48. */
  49. $post_id = $post->ID;
  50. $post_type = $post->post_type;
  51. $post_status = $post->post_status;
  52. $url = '';
  53. $saved_url = get_post_meta($post_id, 'shorturl', true);
  54. /*
  55. ************************
  56. *
  57. * Main Shortening Work
  58. *
  59. ************************
  60. */
  61. //check prior generation and publish status
  62. if (empty($saved_url) && ($post_status == 'publish' || $transition == true)) {
  63. //Add 'Generating' word stub to prevent generation loops (esp. Yourls)
  64. update_post_meta($post_id, 'shorturl', 'Generating...');
  65. //Use permalinks
  66. if ($options->get('useslug') == 'yes') {
  67. $url = get_permalink($post_id);
  68. if ($url) {
  69. $shortlink = $this->shortener->generate($url);
  70. }
  71. //Use IDs
  72. } else {
  73. switch ($post_type) {
  74. case 'post' :
  75. $url = $home_url . "/index.php?p=" . $post_id;
  76. break;
  77. case 'product' :
  78. $url = $home_url . "/index.php?p=" . $post_id;
  79. break;
  80. case 'page' :
  81. $url = $home_url . "/index.php?page_id=" . $post_id;
  82. break;
  83. default :
  84. break;
  85. }
  86. if ($url) {
  87. $shortlink = $this->shortener->generate($url);
  88. }
  89. }
  90. /*
  91. ***********************
  92. * Allow other plugins to use generated shortlink (1st generation)
  93. ************************
  94. */
  95. if (!empty($shortlink)) {
  96. do_action('urlyar_use_shortlink', $post_id, $shortlink);
  97. }
  98. //assign saved URL if already generated
  99. } elseif (!empty($saved_url)) {
  100. $shortlink = $saved_url;
  101. }
  102. //Update Custom Field
  103. if (empty($saved_url) && !empty($shortlink)) {
  104. update_post_meta($post_id, 'shorturl', $shortlink);
  105. } elseif (empty($saved_url)) {
  106. //remove 'Generating' word stub in case generation failed
  107. delete_post_meta($post_id, 'shorturl', 'Generating...');
  108. }
  109. //Return Nice ID if shortlink is still empty
  110. if ($options->get('niceid') == 'yes' && empty($shortlink)) {
  111. $shortlink = $home_url . $options->get('niceid_prefix') . $post_id;
  112. }
  113. /*
  114. ***********************
  115. * Allow other plugins to filter output
  116. ************************
  117. */
  118. if (!empty($shortlink)) {
  119. apply_filters('urlyar_filter_shortlink', $post_id, $shortlink);
  120. }
  121. /*
  122. ***********************
  123. * Finally!
  124. ************************
  125. */
  126. return $shortlink;
  127. ?>