Tag Info

Hot answers tagged

10

If you're on a remote server, XMLRPC would be best, but requires login details If you're in a PHP script on the same server, wp-load.php would be best ( XMLRPC will involve a request of sorts ) If you're in a bash or CLI script, WP CLI would be best, e.g.: wp post create --post_type=page --post_status=publish --post_title='A future post' ...


7

You have 2 problems. First problem The line $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; will fail, because on singular post view, when the url contains '/page/XX/' the variable WordPress sets is 'page' and not 'paged'. You may think to use 'page' instead of 'paged', but that will not work too, because once the 'page' variable ...


7

Every post update in wordpress, is handled by the wp_update_post function. This function has some defaults, and for post_content_filtered the default value is '' (empty string). Once the default are merged to args passed to function via wp_parse_args it means that every time a post is updated and post_content_filtered is not explicitly passed, it is setted ...


7

Post list in admin (edit.php) use a normal WP_Query, just like frontend can be changed using pre_get_posts. add_action('pre_get_posts', 'reorder_my_cpt'); function reorder_my_cpt( $q ) { $s = get_current_screen(); // change 'book' with your real CPT name if ( is_admin() && $s->base === 'edit' && $s->post_type === 'book' ...


6

If I understand well, you need to retrieve all the posts having category 'y' and also meta key 'facebook_shares', after that, you need the position of a specific post. My proposal is: Create a class that extends WP_Query and filter the results for required category and meta field. This class should also filter the SQL query to set the meta value as a ...


6

Prevent authors from publishing too short content: Here's one idea using a custom post status, for example short: /** * Register a custom 'short' post status * * @see http://wordpress.stackexchange.com/a/159044/26350 */ function wpse_short_post_status() { register_post_status( 'short', array( 'label' => _x( 'Short', ...


6

This question is going to get some opinion based answers, but well, I'll give it a try. There are a couple of reasons why someone might've told you that, it would be great to know the context also. Upto version 3.4 or 3.5, that function only worked when the parameter was a var, that might be one of the reasons why someone told you that. I, myself, don't ...


6

For starters let's dive into what is 5 really. It is the post's ID. But what is ID in turn? It is value in the MySQL table row which identifies the specific post record. Issues with using IDs So first there are some conceptual problems with it. It's not content. It's not something user creates, manipulates, or (most of the time) aware of. WP is (by design) ...


5

If this is how it looks: <img class="alignleft size-medium wp-image-8530" alt="..." src="#" width="413" height="275" /> <img class="alignleft size-medium wp-image-8529" alt="..." src="#" width="413" height="275" /> Then you have to put them together like this: <img class="alignleft size-medium wp-image-8530" alt="..." src="#" width="413" ...


4

When you set a post as password protected, the protection happen on get_the_content() function. There WordPress check for a post password cookie, and if not set, not valid or expired then show the password form. This password form is submitted to wp-login.php, there a cookie is setted according to the password wrote in the form, then the request is ...


4

The following query retrieves the oldest post of a specified user/author: $user_id = 42; // or whatever it is $args = array( 'posts_per_page' => 1, 'post_status' => 'publish', 'author' => $user_id, 'orderby' => 'date', 'order' => 'ASC', ); $first_post = new WP_Query($args); if ($first_post->have_posts()) { ...


4

You can use 'the_title' filter (Codex link) add_filter( 'the_title', 'lose_four_chars'); function lose_four_chars($title) { if ( is_single()) { return substr($title, 4); } else { return $title; } }


4

When inside of the media uploaded in the post edit screen, just search for your previously attached media and embed it in your new post. The relationship between posts and attachments is preserved in the database. While an attachment can only belong to one post, it can still be embedded in many posts without worry.


4

You can technically add a post column with SQL but I'd caution against it as backup scripts, exports etc. would likely ignore it. Instead, I would add the content as a post_meta, either using a Custom Field or through PHP with the update_post_meta() function. To fetch a post based on the meta simply use: $args = array( 'post_type' => ...


4

Archive Page An archive page is part of the WordPress Template Hierarchy, and is the template file WordPress uses to display the archive index list for a given post type. The custom post type archive template hierarchy is as follows: archive-{posttype}.php archive.php index.php WordPress uses the query parameters to output this page, and posts are ...


4

I found the following filter, here unlocking all protected meta data: add_filter( 'is_protected_meta', '__return_false' ); Or it can be fine tuned: add_filter( 'is_protected_meta', function( $protected, $meta_key, $meta_type ) { $allowed = array( '_edit_lock', '_test', '_wp_page_template' ); if( in_array( $meta_key, $allowed ) ) return ...


4

The problem with the code in your question is it always intercepts. You completely lose the ability to not publish, no drafts possible. Why this leads to untrashable post is something I didn't inspect further. Anyway this isn't what one wants. I'm glad the javascript solution is working for you, but personally I have two problems with it, first, you can ...


4

Preface Once post preview is frontend, the comment form depends on how theme handle it. I will assume in this answer that the comment form is shown using the standard comment_form() function. The previous assumption isn't enough, in fact comment_form is probably the function in WordPress core with more hooks. There is almost an hook for every line. So what ...


4

You can use a modified version of this answer by @s_ha_dum. Where instead of an option you can setup a user meta (even if meta query is slower than option query) add_action('save_post', 'user_last_update', 10, 2); function user_last_update($id, $p) { if ( (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) || (defined('DOING_AJAX') ...


4

The Automatic Sponsor Posts Injector: Here's one idea based on my answer for the question: How to show Y number of custom posts after every X normal posts? I hopefully made it a little bit more useful here on Github, but it may be refined much more (future work). The SponsorPostsInjector class will help you to automatically inject the sponsor posts into ...


3

Yes of course. One of the ways to achieve this is by adding an extra category to your posts which you call 'sticky' or 'important' or something like that. For the example I will choose 'important'. To only get the important posts you can write a loop which loops through this category. For example: <?php $args = array( //arguments for the loop ...


3

It generally the clears the current loop // main loop <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php the_content(); ?> <?php endwhile; endif; ?> // rewind <?php rewind_posts(); ?> // new loop <?php while (have_posts()) : the_post(); ?> <?php the_content(); ?> <?php endwhile; ?> Here it ...


3

Normally $post should be an object which is an instanceof WP_Post. The object normally has a default of 0 if no parent is set the post type is not hierarchical So the only thing that can be here is that the post object isn't set up properly. Make sure you're inside a loop, have called the_post() or $custom_query->the_post() or used setup_postdata( ...


3

First, I would solve your problem using WPQuery. Best to go there as opposed to query_posts Second, once you acknowledge and accept that WP Query is your friend for as long as you are within the wonderful world of WP theming, then you have to do as follows to solve your particular pickle: if(is_category('your_category') : $args = array( 'post_type' ...


3

You need a function that hook into post status transitions and send and email containing a link with some verification variables and a function that takes that variables, check them and if all ok update posts status. Following code I think is self-explanatory, and comments give additional help: add_action('new_to_pending', 'send_approve_link'); ...


3

Problem is that meta values are not unique key/value data. E.g. with the key 'OneKey' you can have a lot of values for the same post. So, in a flat table, for the column 'OneKey' you should have multiple rows where the post id is the same and seems to me is not what you want. Sure, you can take ony one value treating all meta key as singular, but also a ...


3

You don't have to run two queries, as you already got what you want (even more). $args = array ( 'post_type' => 'mytheme_posttype', 'post_status' => 'publish', 'numberposts' => 12, ); $sliderQuery = new WP_Query($args); $num_posts = $sliderQuery->post_count; if ($num_posts >=4) { if ($num_posts >= 12) ...


3

So far as I am aware, there is no hook in the location you need, if I understand you. The closest I can think of is loop_start, which as you might expect runs when the loop begins. The problem with that hook is that you don't know what content the theme may have between the <head> of the document and the place where the Loop runs. By far the best ...


3

You should not be using query_posts at all. It should be noted that using this to replace the main query on a page can increase page loading times, in worst case scenarios more than doubling the amount of work needed or more. While easy to use, the function is also prone to confusion and problems later on. See the note further below on caveats ...


3

My idea is that you can setup a post date for the attachments. This can be done using attachment_fields_to_edit to show the UI (is possible use the touch_time internal function). After that, you can filter all the attachments query to show only the attachments with a past or current date. So add_action('load-post.php', 'setup_attachment_fields'); ...



Only top voted, non community-wiki answers of a minimum length are eligible